使用Math.ping Pong时如何将敌方游戏对象移回其初始位置?

时间:2019-10-12 12:32:01

标签: c# unity3d

我有一个巡逻的敌人和一个对撞机,当玩家进入时会作为区域触发器。当玩家进入那个盒子时,我的敌人开始跟随它,并站到离玩家几步之遥的位置。但是,当玩家退出对撞机时,敌人会被传送到跟随玩家之前的最后位置。

我已经看到这个相似的话题得到了解决,但是还没有找到与我相似的话题。

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,并再次从pos 1到pos 2进行巡逻,反之亦然。

0 个答案:

没有答案