Как переместить вражеский игровой объект обратно в исходное положение при использовании math.ping pong? - PullRequest
0 голосов
/ 12 октября 2019

У меня есть патрулирующий враг и коробочный коллайдер, который действует как триггер области, когда игрок входит в него. Когда игрок входит в это поле, мой враг начинает следовать за ним и встает в положении стоя на расстоянии нескольких единиц от игрока. Однако, когда игрок выходит из боксового коллайдера, враг телепортируется на последнюю позицию, в которой он находился перед следующим игроком.

Я видел, как решается эта похожая тема, но не нашел ни одной, похожей на мою,

public Vector3 pos1 = new Vector3(10, 0, 0);
public Vector3 pos2 = new Vector3(14, 0, 0);

public float speed;
public float stoppingDistance;

public void FollowPlayer()
    {       
        Aggro aggro = aggroBox.GetComponent<Aggro>();

        if(aggro.playerIsIn == true)
        {
            if (Vector2.Distance(transform.position, player.position) > stoppingDistance)
            {
                transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime);
                isMoving = true;
            }
            else if ((Vector2.Distance(transform.position, player.position) < stoppingDistance))
            {
                transform.position = this.transform.position;
            }
        } 
        else
        {
            MoveEnemy();
        }
    }

    public void MoveEnemy()
    {
        float pingPongT = Time.time * speed;

        float pingPongLength = 1.0f;

        transform.position = Vector3.Lerp(pos1, pos2, Mathf.PingPong(pingPongT, pingPongLength));

        float repeatedPingPong = Mathf.Repeat(pingPongT, pingPongLength * 2f);

        if (repeatedPingPong < pingPongLength)
        {
            sr.flipX = false;
        }
        else
        {
            sr.flipX = true;
        }                 
    }

Я хочу, чтобы мой вражеский скрипт начал вычислять math.pingpong с последней позиции, в которой он находился до того, как игрок покинул область, и снова начал патрулировать с позиции 1 до позиции 2 и наоборот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...