当我的玩家被我的坦克上的子弹击中时,我的玩家并没有死亡。我认为问题出在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);
}
}
}
答案 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
一样。由于您已命名组件项目符号,因此我猜想此脚本已附加到项目符号对象上,因此不会破坏您的播放器。