0
我編碼2D平臺遊戲。在遊戲中,有盟友和敵人走向對方。如果他們相互碰撞,他們自己的計時器腳本開始倒數計時,健康減少的時間爲週期。如果一個角色的健康等於零,我摧毀了這個gameobject。我爲每個角色添加一些布爾值來檢測它們是否相互碰撞。雖然碰撞兩個gameobjects,如果一個破壞,其他碰撞gameobject仍然持續碰撞,雖然沒有碰撞對象。這隻會發生其他碰撞對象被破壞。如果其他遊戲對象破壞,Unity 2D碰撞不會停止
public float setSpeed;
public bool enemyColliding;
float speed;
void Start() {
}
// Update is called once per frame
void Update() {
speed= setSpeed;
GetComponent<Rigidbody2D>().velocity = new Vector2 (speed,GetComponent<Rigidbody2D>().velocity.y);
if (enemyColliding) {
attackAnimation();
}
else
{
walkAnimation();
}
}
void OnTriggerEnter2D(Collider2D coll)
{
if (coll.gameObject.tag == "dusman" /*enemy*/) {
enemyColliding= true;
}
}
void OnTriggerExit2D(Collider2D coll)
{
if (coll.gameObject.tag=="dusman" /*enemy*/) {
enemyColliding= false;
}
}
void attackAnimation()
{
Animator animator = this.gameObject.GetComponent<Animator>();
animator.runtimeAnimatorController = Resources.Load ("AllyWr2AttackAnim") as RuntimeAnimatorController;
}
void walkAnimation()
{
Animator animator = this.gameObject.GetComponent<Animator>();
animator.runtimeAnimatorController = Resources.Load ("AllyWr2WalkAnim") as RuntimeAnimatorController;
}
任何幫助,請...
謝謝回答。還有更多不同的gameobjects。它檢測到他人,如果我這樣做。 –
如果我是正確的,當你刪除gamepject與HP <0,他們仍然衝突和OnTriggerExit2D沒有被調用。它在刪除之後調用並且OnTriggerExit2D中的coll應該爲null。檢查這個。如果它是真的,你可以在if語句 –
中使用它,另一種方法是改變gameobject在gamefield外的位置,然後刪除它。黑客) –