我正在创建一个基本的射击机制,其中子弹结束在一个LineRenderer的末尾。实例化项目的代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BulletScript : MonoBehaviour
{
[SerializeField] PlayerAttacking PA;
[SerializeField] float speed;
Vector3 BulletEndDist;
// Start is called before the first frame update
void Start() {
PA = GameObject.Find("AttackTrail").GetComponent<PlayerAttacking>();
BulletEndDist = transform.position + (transform.forward * PA.TrailDistance) ;
}
// Update is called once per frame
void Update() {
if(transform.position == BulletEndDist)
{
Destroy(this.gameObject);
}
transform.Translate(new Vector3(0, 0, speed));
}
private void OnCollisionEnter(Collision collision) {
if(collision.transform.tag == "Enemy")
{
// Decrease health
Destroy(this.gameObject);
}
else
{
Destroy(this.gameObject);
}
}
}我遇到的问题是子弹永远不会被销毁,通过一些Debug.Logs,我发现它没有进入更新中的if条件。这是没有意义的,因为子弹应该最终到达BulletEndDist?请帮帮我!
发布于 2021-12-05 09:34:59
如果要检查子弹与播放机之间的距离,应该使用Vector3.Distance函数计算到浮点的距离,这样就可以将子弹与播放器之间的最大距离进行比较。
https://stackoverflow.com/questions/70232910
复制相似问题