Почему объект вращается слишком медленно? И как я могу сделать так, чтобы объект не был повернут лицом вперед в первоначальном направлении? - PullRequest
0 голосов
/ 25 января 2020
private void Update()
    {
        if(toRotate == true)
        {
            transform.Rotate(Vector3.forward, Time.deltaTime * 10);
        }
    }

Даже если изменить скорость на 100, это очень медленно. И я хочу, чтобы, когда не вращался, чтобы добавить, преобразование будет по умолчанию направлено вперед.

Это работает для быстрого вращения:

transform.Rotate(0,0,100);

Это работает для обеих проблем:

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

Ответы [ 2 ]

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

Это из-за Time.deltatime, потому что Time.deltatime возвращает разницу между двумя последовательными кадрами, что очень мало, если ваша частота кадров высока. В моем случае, FPS составляет 85, а мое deltatime составляет около 0,0166682.

И если я хочу увеличить это число до 16.6682, тогда я должен умножить его на 1000 , если я умножу его на 100 , я получу только 1,66682 , что является медленной скоростью вращения, и на этой скорости вращению потребуется 2,54 Se c, чтобы повернуть это на 360 градусов.

А для вращения вы можете просто сказать transform.localrotation = Quaternion.identity, чтобы установить вращение вашего объекта на ноль.

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

В вашем первом примере вы неправильно используете transform.rotate (). Первым аргументом действительно должен быть Vector3 (), представляющий углы Эйлера, но вторым аргументом должна быть ссылочная система координат для поворота, Space.Self или Space.World.

Если я правильно понимаю, кто вы пытаясь добиться этого, вы должны использовать функцию, подобную этой:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Stack_rotate : MonoBehaviour

{
     float rotationAngleOverZAxisPerFrame = 1200f;

     void Update()
     {
         transform.Rotate(new Vector3(0, 0, rotationAngleOverZAxisPerFrame * Time.deltaTime), Space.Self);
     }
}

Вращение объектов может быть очень неприятным, потому что есть несколько способов задать вращения объектов в единстве.

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