Quote (Povstalez)
Quote (robertono)
Есть камера. Есть поворот по оси Х. Сейчас там стоит параметр - 0. Нужно что бы камера плавно повернулась по этой оси до 90 градусов.Как бы сначало разгон, поворот на одной скорости,плавная остановка поворота. Ну а вкратце: плавный поворот камеры. Думаю кому нибудь пригодится...
Сделал, правда криво.
Но ускарение и торможение работает:
Code
using UnityEngine;
using System.Collections;
public class CameraRot : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if(transform.rotation.x >= 0 && transform.rotation.x <= 30)
transform.RotateAroundLocal(new Vector3(90,0,0),90*Time.deltaTime * 0.001f);
if(transform.rotation.x >= 30 && transform.rotation.x <= 60)
transform.RotateAroundLocal(new Vector3(90,0,0),90*Time.deltaTime * 0.005f);
if(transform.rotation.x >= 60 && transform.rotation.x <= 90)
transform.RotateAroundLocal(new Vector3(90,0,0),90*Time.deltaTime * 0.001f);
else
{
transform.RotateAroundLocal(new Vector3(90,0,0),90*Time.deltaTime * 0.001f);
}
}
}
Зачем делать если криво?
Тебя попросили сделать твин.
Ты привязался к 90 градусам, а если завтра будет 45?а если 20? А послезавтра я скажу что мне надо иметь возможно вращать каждые N секунд, а в другом случае каждые пол секунды?
Далее - ты написал это все в апдейт - зачем? У тебя что каждую милисекунду будет вращать камеру / вхолостую делаться проверки?
Создается метод с циклом и все. Согласись удобнее обратиться к методу поворота задав любой трансформ, любой угол и любое время поворота ?
Вот функция.
Code
public IEnumerator rotateSmooth(Transform obRotate, Vector3 endRot, float timer){
Quaternion newDirection;
newDirection = new Quaternion ();
newDirection = Quaternion.Euler (endRot.x, endRot.y, endRot.z);
float t = 0.0f;
while (t < 1.0f) {
t += Time.deltaTime * (1.0f / timer);
obRotate.rotation = Quaternion.Lerp (obRotate.rotation, newDirection, t);
yield return 0;
}
}
Все. Вызывается так - StartCoroutine(rotateSmooth(transform,new Vector3(90,0,0),0.5f));
Вуаля - плавный поворот на 90 по иксу за пол секунды. Любой угол и время указываем и вращаем.