我正在創建一個基本的射擊機制,子彈在 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最終應該到達嗎?請幫忙!
uj5u.com熱心網友回復:
如果您想檢查子彈與玩家的距離,您應該使用Vector3.Distance函式,將距離計算為浮點數,您可以將其與您希望子彈與玩家的最大距離進行比較。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/373028.html
上一篇:如果輸入為空,則分配None
