@Romanuss

Не могу понять почему не работает кусок код?

Имеется код передвижения персонажа (Врага) по платформе. Позиция задаётся рандомно. Проблема в том, что некоторые участки кодва работают 1 раз или вообще игнорируются.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AiController : MonoBehaviour {

    private float waitTime;
    private Animator anim;
    private bool isFacingRight = true;
    private float currentTr;


    public Transform translatePoint;
    public float speed;
    public float startWaitTime;

    public float minX;
    public float maxX;


    void Start ()
    {
        waitTime = startWaitTime;
        translatePoint.position = new Vector2(Random.Range(minX, maxX), translatePoint.position.y);
        anim = GetComponent<Animator>();
        currentTr = transform.position.x;
    }
	
	void Update ()
    {
        transform.position = Vector2.MoveTowards(transform.position, translatePoint.position, speed*Time.deltaTime);
        

        if (Vector2.Distance(transform.position, translatePoint.position) < 0.2f)
        {
            if(waitTime <= 0)
            {
                translatePoint.position = new Vector2(Random.Range(minX, maxX), translatePoint.position.y);
                waitTime = startWaitTime;
                anim.SetBool("Walck", false);
            } else {
                waitTime -= Time.deltaTime;
            }

        }

        float pos = translatePoint.position.x;

        if (currentTr < pos && isFacingRight == false) //здесь игнор
        {
            Debug.Log("Left");
            anim.SetBool("Walck", true);
            Flip();
        } 
        else if (currentTr > pos && isFacingRight == true) //здесь работает 1 раз
        {
            Debug.Log("Right");
            anim.SetBool("Walck", true);
            Flip();
        }
    }

    private void Flip()
    {
        //меняем направление движения персонажа
        isFacingRight = !isFacingRight;

        transform.Rotate(0f, 180f, 0f);
    }
}


P. S. простите за тупой вопрос :)
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
DanceM
@DanceM
Кто хочет -ищет способ, кто не хочет -ищет причину
Значение currentTr не меняется, как установили на старте, так и стоит. Потому срабатывает один раз, пока pos в диапазоне, а после меняется и второе значение для проверки, isFacingRight, и никаких больше срабатываний не будет, пока currentTr > pos .
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы