首先統一C#的浮點值在我的代碼沒有減少對「OnCollisionEnter2d」
using UnityEngine;
using System.Collections;
public class Layer : MonoBehaviour {
public float health=150f;
void OnCollisionEnter2D(Collision2D beam){
if (beam.gameObject.tag == "Box") {
Destroy (gameObject);
}
Projectile enemyship = beam.gameObject.GetComponent<Projectile>(); // Retrieving enemyship
if (enemyship) {
Destroy (gameObject);
health = health - 100f; // its value is decreasing only once
Debug.Log (health);
if (health < 0f || health == 0f) {
Destroy (enemyship.gameObject); // this line not executing
}
}
}
}
看看在我上面的代碼中的健康狀況下降只有一次,但OnCollisionEnter2D正常工作的價值。這意味着在第一次碰撞時,健康值減少100f,並變爲50f,但當它第二次碰撞時,其值仍然是50f。自從3小時後我一直在尋找這種解決方案。請幫我
我加了一點東西。當我按下空間時,我正在發射彈丸(激光)。所以當激光擊中兩次物體應該被破壞時
'如果(enemyship){銷燬(遊戲對象);'你摧毀的對象與健康,那麼它不會再次襲來...... –
* OnCollisionEnter2D工作正常」 - 你真的使用斷點來確認它嗎?聽起來好像事件處理程序只能觸發一次。 – CoolBots
你還應該寫'if(health <0f || health == 0f)'作爲'if(health <= 0)' – DavidG