子弹碰到玩家时,玩家不会死

时间:2019-05-08 15:57:54

标签: unity3d game-physics

IMAGE

当我的玩家被我的坦克上的子弹击中时,我的玩家并没有死亡。我认为问题出在OnTriggerEnter2d方法中。子弹不会杀死玩家而穿过玩家。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour
{
    float moveSpeed = 7f;
    Rigidbody2D rb;
    Player target;
    Vector2 moveDirection;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        target = GameObject.FindObjectOfType<Player>();
        moveDirection = (target.transform.position - transform.position).normalized * moveSpeed;
        rb.velocity = new Vector2(moveDirection.x, moveDirection.y);
        Destroy(gameObject, 3f);  
    }

    void OnTriggerEnter2D ( Collider2D col)
    {
        if(col.gameObject.name.Equals ("Player"))
        {
            Debug.Log("Hit");
            Destroy(gameObject);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

看起来您正在摧毁子弹,而不是玩家。尝试销毁属于玩家对撞机的gameObject:

void OnTriggerEnter2D ( Collider2D col)
{
    if(col.gameObject.name.Equals ("Player"))
    {
        Debug.Log("Hit");
        Destroy(col.gameObject);
    }
}

当您说Destroy(gameObject)时,gameObject本身就是指该组件所连接的GameObject。就像说this.gameObject一样。由于您已命名组件项目符号,因此我猜想此脚本已附加到项目符号对象上,因此不会破坏您的播放器。

请参阅:Component.gameObject