@Mahmudi

Оператор == не выявляет true, поэтому мои проджекты летят бесконечно. Как исправить?

public class Bullet : MonoBehaviour
{
    public float speed;
    Vector3 bulletEndPos;
   
    [SerializeField] Controller player;
    
    void Start()
    {
        player = GameObject.Find("Player").GetComponent<Controller>();
        
        bulletEndPos = transform.position + transform.forward * player.trailDistance;
        
    }
    
    void FixedUpdate()
    {        
        transform.Translate(Vector3.forward * speed * Time.deltaTime);

        if (transform.position == bulletEndPos)
        {
             Destroy(this.gameObject);
        }

    }
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Надо не точные координаты сравнивать, а расстояние, на которое пуля улетела.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
Если вы сравниваете вещественные числа, то они вряд ли будут равны в силу погрешностей в вычислениях. В таких случаях проверяют, что разница между обоими числами близка к нулю, к примеру, < 0.000001 (число нулей - в зависимости от нужной вам точности)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы