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 Material
in 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 Samp
in 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 Coin
in Asset Store
Coin Crazy Coin - Download
Ball Pack
in 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
SpikeBall
and 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.js
toCoin
,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.js
toGenerator
- Prefab
Coin
andSpikeBall
- Drag and drop each prefabs to
coinPrefab
andspikePrefab
inGenerator.js

Messaging for getting coin and demage
- Set layer
- Create layer and change Name to
Character
andMoving Object
Coin Crazy Message - Set Layer of character Game Object to
Character
- Set Layer of
Coin
andSpikeBall
Prefab toMoving Object
- Set Matrix to not collide
Charater
Layer andMoving Objects
Layer
Coin Crazy Message - Check
Is Trigger
in Inspector ofC_man_1_FBX2013
Game 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.js
toCoin
Prefab SpikeBall.js
function OnTriggerEnter(other : Collider){
other.gameObject.SendMessage("ApplyDamage", 10);
Destroy(gmaeObject);
}
-
Drag and drop
SpikeBall.js
toSpikeBall
Prefab -
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.js
to character Game Object
Apply sound
- Import sound file
- Download
Sound Pack Free Pack
in Asset Store
Coin Crazy Sound - Download
- Click
C_man_1_FBX2013
Game Object and click Component>Audio>Audio Source -
Change Audio Clip to
buy
and uncheckPlay On Awake
in Audio Source in Inspector PlayerSoundEffector.js
function CatchCoin(amount : int){
audio.Play();
}
- Drag and drop
PlayerSoundEffector.js
to 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