@PRIYD

Почему не передвигаются объекты?

Здравствуйте, есть определенное количество объектов, которые должны передвигаться. При вызове функции PlayerWalking(класс PlayerMovement) из другого скрипта(Test) ничего не происходит(если вызывать вызывать в PlayerMovement, то всё работает). Помогите разобраться.

Код класса PlayerMovement:
public class PlayerMovement : MonoBehaviour
{
    private float _playerSpeed = 500f; 

    // Ходьба осуществляется в соответствии с заданым направлением, пример: (1, 0, 0); (1, 0, -1)...
    public void PlayerWalking(Vector3 movementVector, float movementCoefficient) 
    {
        float playerDirectionX = movementVector.x;
        float playerDirectionZ = movementVector.z;
        
        gameObject.transform.Translate(
            Vector3.forward * _playerSpeed * playerDirectionX * movementCoefficient * Time.deltaTime + 
            Vector3.right * _playerSpeed * playerDirectionZ * movementCoefficient * Time.deltaTime);       
    }

}


Код класса Test:
public class Test : MonoBehaviour
{
    private List<GameObject> objects;
    private PlayerMovement playerMovement;

    void Update()
    {
        objects = FindInActiveObjectsByTag("Player");

        for (int n = 0; n < objects.Count; n++)
        {
            playerMovement = objects[n].GetComponent<PlayerMovement>();
            playerMovement.PlayerWalking(new Vector3(1f, 0f, 1f), 1f);
        }           
    }

    // Функция, которая находит все объекты с определенным тегом
    private List<GameObject> FindInActiveObjectsByTag(string tag)
    {
        List<GameObject> validTransforms = new List<GameObject>();
        Transform[] objs = Resources.FindObjectsOfTypeAll<Transform>() as Transform[];

        for (int i = 0; i < objs.Length; i++)
        {
            if (objs[i].hideFlags == HideFlags.None)
            {
                if (objs[i].gameObject.CompareTag(tag))
                {
                    validTransforms.Add(objs[i].gameObject);
                }
            }
        }
        return validTransforms;
    }
}


Насколько я понял из тестов, то ссылки на все объекты работают, а вот движения так и не происходит
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
@PRIYD Автор вопроса
Объекты не двигались из-за того, что функция вызывалась 1 раз. Переделали на вызов PlayerWalking() в Update() и просто сделали функцию смены направления.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы