[英]OnTriggerEnter2D getting called
如果敵人與子彈相撞,我正試圖摧毀它。 但是 OnTriggerEnter2D 不起作用。 我一直試圖解決這個問題並尋找答案幾個小時,但我似乎無法找到問題。
敵人腳本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyManager : MonoBehaviour
{
[SerializeField]
private Transform target;
[SerializeField]
private float speed;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.position = Vector2.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
}
void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log("Colliding with trigger");
if (collision.CompareTag("bullet"))
{
Debug.Log("I got hit");
Destroy(gameObject);
}
}
}
子彈
敵人
如果它是與另一個碰撞的實際對象,則您想改用OnCollisionEnter2D
。 觸發器用於無法碰撞的對象,您只想知道它們是否重疊。
嘗試在碰撞器上切換 isTrigger 而不是子彈。
另請參閱有關如何創建 2d collider 的文檔: 如何在碰撞后銷毀項目
您好,這是我的第一個幫助帖子,晚了 2 年半……但我遇到了類似的問題,也許可以幫助其他人。 如果您有“敵人”腳本,請嘗試此操作。 我使用粉碎這個詞來避免諸如破壞或破壞之類的內置詞。
使用它來調用:在 < > 內將對象“標簽”放在 < > 之間以銷毀對象。 在這種情況下的敵人
碰撞.GetComponent<敵人>().Smash();
在“敵人”腳本中使用 IEnumerator“協程”
IEnumerator SmashCo()
{
yield return new WaitForSeconds(.3f);
this.gameObject.SetActive(false);
}
在“Enemy”腳本中調用這個 Coroutine:注意: animator 是對 Unity 的 Animator 的引用
public void SmashEnemy()
{
animator.SetBool("smash", true); // Set the animator Bool for smash
StartCoroutine(SmashCo());
}
向您的游戲對象添加一個名為 smash 的觸發器。 你應該能夠摧毀這樣的東西。
注意:在陰影中使用 Stack Overflow 很長一段時間,這是我的第一篇文章,如果我有任何錯誤,我希望得到糾正,謝謝。 只是想幫忙。 *認為這是對當前答案的不同方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.