Как определить, в каком направлении движется объект, движение которого создается с помощью math.pingpong? - PullRequest
1 голос
/ 30 сентября 2019

Мне нужно определить, движется ли мой объект влево или вправо. Его движение создано с помощью math.pingpong в векторе 3.

Я видел некоторые темы, относящиеся к той же проблеме, что и я, но ни у одной из них нет моего типа кода движения. Я пытался сделать это с solidbody.velocity, но я не могу сделать это правильно.

public class EnemyMovement : MonoBehaviour
{

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


    public float speed = 1.0f;

    public bool isMoving;

    void Update()
    {
        moveEnemy();
    }

    void moveEnemy()
    {
        transform.position = Vector3.Lerp(pos1, pos2, Mathf.PingPong(Time.time * speed, 1.0f));
        isMoving = true;
    }
}

Мне нужно знать направление, чтобы перевернуть спрайт в правильном направлении.

1 Ответ

0 голосов
/ 30 сентября 2019

Вы можете определить, какое направление Mathf.PingPong движется, используя Mathf.Repeat с тем же t и вдвое большим, чем length, который вы используете для PingPong, затем проверяете, является ли результат меньше или больше length:

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) 
{
    // result of PingPong is increasing or just about to start increasing
} 
else 
{
    // result of PingPong is decreasing or just about to start decreasing
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...