Game design
- Player character
- Stage
- Coin
- Obstacle
- Generator for coin and obstacle
- Game Controller
Create stage
- Create Cube and change Scale to (100, 1, 100)
- Change Position to (0, -0.5, 0)
- Add texture
-
Create Cube and change Position to (0, 0.5, 0)
- Create Directional Lights
- Create Directional Light
- Change Position to (0, 0, 0) and Rotation to (90, 0, 0)
- Change Intensity to 0.5
- Create Directional Light
- Change Position to (0, 0, 0) and Rotation to (-90, 0, 0)
- Change Intensity to 0.2
- Create Physic Material
- Create folder and change Name to
Physic Material - Create Physic Material in the folder and change Name to
Default Physic Material
Coin Crazy Stage - Change Dynamic Friction to 0.2, Static Friction to 0.2 and Bounciness to 0
Coin Crazy Stage - Edit>Project Settings>Physics
- Open Physics Manager in Inspector View
- Drag and drop to
Default Physic Materialin Physics Manager
Coin Crazy Stage - Create folder and change Name to
- Set Camera
- Change camera Position to (0, 7, -10), Rotation to (30, 0, 0) and Field of View to 30
- Change Near to 0.3 and Far to 50 in Clipping Planes
- Organize name and hierarchy
Coin Crazy Stage
Use character
- Import file
- Download
Character Pack: Free Sampin Asset Store
Coin Crazy Character - Download
- Deploy character
- Open DemoScene in character Asset folder
Coin Crazy Character - Copy character and paste to game Scene
Coin Crazy Character - Set Bounce Combine to minimum
- Change Jump Force to 6
Implement coin and obstacle
- Create coin and obstacle
- Download
Old Coinin Asset Store
Coin Crazy Coin - Download
Ball Packin Asset Store
Coin Crazy Obstacle - Open Presentation Scene in
Old Coin - Copy coin and paste to game Scene
- Change Scale and Rotation
- Open Material folder and change Color to yellow in Inspertor in Coin Object
Coin Crazy Coin - Open
Ball Pack - copy
SpikeBalland paste to game Scene - Change Scale and Position
- Download
ShortMoveController.js
var velocity : float = 8.0;
var moveDelay : float = 1.0;
var sustainTime : float = 3.0;
function Start(){
yield WaitForSeconds(moveDelay);
var player : GameObject = GameObject.FindWithTag("Player");
if(player != null){
var direction : Vector3 = (player.transform.position - transfor.position).normalized;
rigidbody.AddForce(direction * velocity, ForceMode.VelocityChange);
}
yield WaitForSeconds(sustainTime);
Destroy(gameObject);
}- Add
ShortMoveController.jstoCoin,SpikeBall - Change Tag of character to Player
Create generator
Generator.js
var intervalMin : float = 0.5;
var intervalMax : float = 1.5;
var coinRate : float = 0.3;
var coinPrefab : GameObject;
var spikeBallPrefab : GameObject;
function Start(){
while(true){
yield WaitForSeconds(Random.Range(intervalMin, intervalMax));
var Prefab : GameObject = Random.value < coinRate ? coinPrefab : spikeBallPrefab;
var theta : float = Random.Range(0.0, Mathf.PI * 2.0);
var position : Vector3 = Vector3(Mathf.Cos(theta), 0.0, Mathf.Sin(theta)) * 5.5;
position.y = 2.5;
Instantiate(prefab, position, Quaternion.identity);
}
}- Create Empty Game Object and change Name to
Generator - Drag and drop
Generator.jstoGenerator - Prefab
CoinandSpikeBall - Drag and drop each prefabs to
coinPrefabandspikePrefabinGenerator.js
Messaging for getting coin and demage
- Set layer
- Create layer and change Name to
CharacterandMoving Object
Coin Crazy Message - Set Layer of character Game Object to
Character - Set Layer of
CoinandSpikeBallPrefab toMoving Object - Set Matrix to not collide
CharaterLayer andMoving ObjectsLayer
Coin Crazy Message - Check
Is Triggerin Inspector ofC_man_1_FBX2013Game Object of character
- Create layer and change Name to
- Create sender script
Coin.js
function OnTriggerEnter(other : Collider){
other.gameObject.SendMessage("CatchCoin", 1);
Destroy(gmaeObject);
}
- Drag and drop
Coin.jstoCoinPrefab SpikeBall.js
function OnTriggerEnter(other : Collider){
other.gameObject.SendMessage("ApplyDamage", 10);
Destroy(gmaeObject);
}
-
Drag and drop
SpikeBall.jstoSpikeBallPrefab -
Create receiver script
PlayerStatus.js
private var life : int = 100;
private var score : int = 0;
function CatchCoin(amount : int){
score += amount;
}
function ApplyDamage(amount : int){
life -= amount;
if (life <= 0){
Destroy(transform.parent.gameObject);
}
}
function OnGUI(){
var rect : Rect = Rect(0, 0, Screen.width, Screen.height);
GUI.Label(rect, "LIFE: " + life.ToString() + " / SCORE: " + score.ToString());
}
Improve visual presentation
DamageEffector.js
private var effectFlag : boolean;
private var originalColor : Color;
function Start(){
originalColor = render.material.color;
}
function Update(){
if(effectFlag){
renderer.material.color = Color.red * Mathf.Abs(Mathf.Sin(40.0 * Time.time));
}
}
function ApplyDamage(amount : int){
effectFlag = true;
yield WaitForSeconds(0.3);
effectFlag = false;
renderer.material.color = originalColor;
}- Drag and drop
DamageEffector.jsto character Game Object
Apply sound
- Import sound file
- Download
Sound Pack Free Packin Asset Store
Coin Crazy Sound - Download
- Click
C_man_1_FBX2013Game Object and click Component>Audio>Audio Source -
Change Audio Clip to
buyand uncheckPlay On Awakein Audio Source in Inspector PlayerSoundEffector.js
function CatchCoin(amount : int){
audio.Play();
}- Drag and drop
PlayerSoundEffector.jsto character Game Object
PlayerSoundEffector.js(change)
var coinSE : AudioClip;
var damageSE : AudioClip;
function CatchCoin(amount : int){
audio.PlayOneShot(coinSE);
}
function ApplyDamage(amount : int){
audio.PlayOneShot(damageSE);
}- Change demage sound