Как я могу проверить, если преобразование eulerAngles в 0,0,0,? - PullRequest
0 голосов
/ 25 января 2020
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateRandom : MonoBehaviour
{
    private void Update()
    {
        if(Whilefun.FPEKit.FPEInteractionManagerScript.naviRotate == true)
        {
            transform.Rotate(0,0,100);
        }
        else
        {
            transform.eulerAngles = new Vector3(0, 0, 0);
        }
    }
}

Я устанавливаю флаг naviRotate в другом скрипте в двух местах true и false. Я хочу, чтобы, когда преобразование не вращалось, всегда было лицом вперед. Проблема в том, что линия

transform.eulerAngles = new Vector3(0, 0, 0);

находится в обновлении, поэтому она будет пытаться вращаться лицом в игре все время. Я хочу, чтобы это когда-то было лицом вперед.

Каждый раз, когда преобразование останавливается, поворачивайте его один раз вперед.

1 Ответ

3 голосов
/ 25 января 2020

Вы можете объявить приватное логическое значение, которое будет назначено равным вашей переменной navirotate bool при активном методе, а затем назначить это логическое значение равным вашему navirotate в каждом кадре в методе обновления. Я пишу этот код только сейчас, и он работает, и вам нужно сделать что-то вроде этого тоже.

public class Test : MonoBehaviour {

    public bool isRotating;
    private bool observer;

    void Awake() {
        observer = isRotating;    
    }

    void Update() {
        if (isRotating) {
            transform.Rotate(0, 0, 100 * Time.deltaTime);
        }
        else if (isRotating != observer) {
            transform.eulerAngles = Vector3.zero;
        }

        observer = isRotating;
    }

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