下樓梯的功能都沒問題之後,我們就要來新增Player的血量屬性,不然玩這個遊戲就沒有挑戰性了!
[SerializeField] int Hp;
Player的右欄屬性裡就會多個Hp
接著,在Start方法裡設定初始血量,也就是遊戲開始後Player的血量,這邊我設為10(可按照自己需求做更改)。
void Start()
{
Hp = 10;
}
還要新增一個方法ModifyHp來加血量或減血量,這個方法會傳一個參數,也就是Player當時要加的血量,或是要扣的血量。記得要將Hp的上限、下限設定好,上限最高為10(由於我的初始血量設為10),下限則設為0。
void ModifyHp(int num)
{
Hp += num;
if(Hp > 10)
{
Hp = 10;
}
else if(Hp < 0)
{
Hp = 0;
}
}
最後,在OnCollisionEnter2D方法裡呼叫ModifyHp,分別在撞到不同階梯時,會有不同的血量修改,這邊我設為當Player撞到Normal階梯時,血量+1;當Player撞到Nails階梯或Ceiling天花板尖刺時,血量-3(可按照自己需求做更改)。
void OnCollisionEnter2D(Collision2D other) //other是指碰撞到的東西
{
if(other.gameObject.tag == "Normal")
{
if(other.contacts[0].normal == new Vector2(0f,1f))
{
Debug.Log("撞到Normal");
currentFloor = other.gameObject;
ModifyHp(1);
}
}
else if(other.gameObject.tag == "Nails")
{
if(other.contacts[0].normal == new Vector2(0f,1f))
{
Debug.Log("撞到Nails");
currentFloor = other.gameObject;
ModifyHp(-3);
}
}
else if(other.gameObject.tag == "Ceiling")
{
Debug.Log("撞到天花板");
currentFloor.GetComponent<BoxCollider2D>().enabled = false;
ModifyHp(-3);
}
}
現在有了Player血量屬性,等於把遊戲的無敵模式漸漸拿掉~之後就可以更有遊戲規則地去
設計遊戲了!