21. 加入Dragon程式腳本,飛龍被飛標擊中會損血,⽣命值歸零時消失
public class Dragon : MonoBehaviour {
[SerializeField]
private int life = 3;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter2D(Collider2D c) {
if (c.tag == "dart") life--;
if (life == 0) Destroy(this.gameObject);
}
}
建立飛龍 4/4
21
26. 在Dart物件加上Dart程式腳本
public class Dart : MonoBehaviour{
//Use this for initialization
public float speed;
void Start(){
GetComponent<Rigidbody2D>().velocity = new Vector2(speed, 0.0f);
}
//Update is called once per frame
void Update(){
}
private void OnBecameInvisible(){ //飛出畫面
Destroy(this.gameObject);
}
void OnTriggerEnter2D(Collider2D c) { //射到其它物件
Destroy(this.gameObject);
}
}
製作飛鏢預製物件 2/3
26
48. 編輯NinjaController程式腳本,加入與陷阱及寶箱道具互動
public class NinjaController : MonoBehaviour{
...
private bool isJump = false; //主角跳躍旗號
private float alpha = 0.0f;
private float da = -0.1f;
private SpriteRenderer playerSprite;
private bool isInjure = false; //主角受傷旗號
// Use this for initialization
void Start(){
...
rigid = this.GetComponent<Rigidbody2D> ();
playerSprite = this.GetComponent<SpriteRenderer> ();
}
更新忍者程式腳本 1/3
48
49. // Update is called once per frame
void Update () {
...
else if (!isJump) PlayAnimation (0);
if (isInjure) { //顯示主角受傷效果
alpha += da; //使主角淡入淡出顯示
playerSprite.material.color = new Color (1f, 1f, 1f, alpha);
if (alpha > 1.0f || alpha < 0.0f) da = -da;
}
}
更新忍者程式腳本 2/3
49
50. void OnTriggerEnter2D(Collider2D c) {
if (c.gameObject.tag == "trap") { //主角碰到陷阱
isInjure = true; //主角為受傷狀態
}
}
void OnTriggerExit2D(Collider2D c) {
if (c.gameObject.tag == "trap") { //主角脫離陷阱
isInjure = false;
playerSprite.material.color = new Color(1f, 1f, 1f, 1f); //復原主角狀態
}
}
void OnTriggerStay2D (Collider2D c) {
if (c.gameObject.tag == "treasure") //主角在寶箱處
if (Input.GetKeyDown (KeyCode.Space)) //按下空白鍵取得寶藏
c.gameObject.GetComponent<TreasureControl>().isOpen = true;
}
}
更新忍者程式腳本 3/3
50