Плавный поворот камеры скриптом - Форум Игроделов
Пн, 20 Май 2024, 05:31 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » ОБЩИЕ ВОПРОСЫ » Плавный поворот камеры скриптом
Плавный поворот камеры скриптом
NapalmRainДата: Пн, 13 Янв 2014, 22:28 | Сообщение # 1
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Доброго всем времени суток.
Есть задача плавно переместить и повернуть камеру из одного положения в другое.
Решаю её следующим образом.
Код
using UnityEngine;
using System.Collections;

public class Menu : MonoBehaviour {
    
   private float xPos, yPos, zPos, yRot, zRot, xRot;
   void Start () {
    b_isShowMenu = true;
    b_isShowGamePlay=false;
    b_isShoeOptions=false;
    xPos = this.transform.position.x;
    yPos = this.transform.position.y;
    zPos = this.transform.position.z;
    xRot = this.transform.rotation.x;
    yRot = this.transform.rotation.y;
    zRot = this.transform.rotation.z;
   }
     
   // Update is called once per frame
   void Update () {
    if (xPos!=this.transform.position.x) {
     if (xPos>this.transform.position.x) {
      this.transform.position = new Vector3(this.transform.position.x+0.5f, this.transform.position.y, this.transform.position.z);
     } else {
      this.transform.position = new Vector3(this.transform.position.x-0.5f, this.transform.position.y, this.transform.position.z);
     }
    }
    if (yPos!=this.transform.position.y) {
     if (yPos>this.transform.position.y) {
      this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y+0.5f, this.transform.position.z);
     } else {
      this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y-0.5f, this.transform.position.z);
     }
    }
    if (zPos!=this.transform.position.z) {
     if (zPos>this.transform.position.z) {
      this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z+0.5f);
     } else {
      this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z-0.5f);
     }
    }
   }
}

В нужный момент задаю новые координаты камеры, а вот с поворотом беда...
Пробовал делать аналогично с координатами перемещения... но получается какая-то ерунда. камера вращается свободно как в невесомости и не приходит в нужные координаты. пробовал иначе различными способами типа:
Код
transform.Rotate(Vector3.up, Time.deltaTime*10);

Но так и не придумал, как заставить камеру принять именно нужные координаты поворота...

Буду благодарен за любой совет.


Сообщение отредактировал NapalmRain - Пн, 13 Янв 2014, 22:30
 
СообщениеДоброго всем времени суток.
Есть задача плавно переместить и повернуть камеру из одного положения в другое.
Решаю её следующим образом.
Код
using UnityEngine;
using System.Collections;

public class Menu : MonoBehaviour {
    
   private float xPos, yPos, zPos, yRot, zRot, xRot;
   void Start () {
    b_isShowMenu = true;
    b_isShowGamePlay=false;
    b_isShoeOptions=false;
    xPos = this.transform.position.x;
    yPos = this.transform.position.y;
    zPos = this.transform.position.z;
    xRot = this.transform.rotation.x;
    yRot = this.transform.rotation.y;
    zRot = this.transform.rotation.z;
   }
     
   // Update is called once per frame
   void Update () {
    if (xPos!=this.transform.position.x) {
     if (xPos>this.transform.position.x) {
      this.transform.position = new Vector3(this.transform.position.x+0.5f, this.transform.position.y, this.transform.position.z);
     } else {
      this.transform.position = new Vector3(this.transform.position.x-0.5f, this.transform.position.y, this.transform.position.z);
     }
    }
    if (yPos!=this.transform.position.y) {
     if (yPos>this.transform.position.y) {
      this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y+0.5f, this.transform.position.z);
     } else {
      this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y-0.5f, this.transform.position.z);
     }
    }
    if (zPos!=this.transform.position.z) {
     if (zPos>this.transform.position.z) {
      this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z+0.5f);
     } else {
      this.transform.position = new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z-0.5f);
     }
    }
   }
}

В нужный момент задаю новые координаты камеры, а вот с поворотом беда...
Пробовал делать аналогично с координатами перемещения... но получается какая-то ерунда. камера вращается свободно как в невесомости и не приходит в нужные координаты. пробовал иначе различными способами типа:
Код
transform.Rotate(Vector3.up, Time.deltaTime*10);

Но так и не придумал, как заставить камеру принять именно нужные координаты поворота...

Буду благодарен за любой совет.

Автор - NapalmRain
Дата добавления - 13 Янв 2014 в 22:28
ЛевшаДата: Пн, 13 Янв 2014, 23:13 | Сообщение # 2
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
http://gamecreatingcommunity.ru/forum/82-6482-1#146398

X.cor.R (Prologue)
 
Сообщениеhttp://gamecreatingcommunity.ru/forum/82-6482-1#146398

Автор - Левша
Дата добавления - 13 Янв 2014 в 23:13
NapalmRainДата: Вт, 14 Янв 2014, 07:51 | Сообщение # 3
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Цитата Левша ()

http://gamecreatingcommunity.ru/forum/82-6482-1#146398

Благодарю, странно, что мне вчера этого поиск не показал...
В принципе всё работает, но на всякий случай спрошу... Нет ли случайно подобного метода и для перемещения по координатам?
Потому что что-то мне подсказывает, что мой метод больше похож на костыль...
 
Сообщение
Цитата Левша ()

http://gamecreatingcommunity.ru/forum/82-6482-1#146398

Благодарю, странно, что мне вчера этого поиск не показал...
В принципе всё работает, но на всякий случай спрошу... Нет ли случайно подобного метода и для перемещения по координатам?
Потому что что-то мне подсказывает, что мой метод больше похож на костыль...

Автор - NapalmRain
Дата добавления - 14 Янв 2014 в 07:51
ЛевшаДата: Вт, 14 Янв 2014, 08:20 | Сообщение # 4
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
Цитата NapalmRain ()
Нет ли случайно подобного метода и для перемещения по координатам?
Потому что что-то мне подсказывает, что мой метод больше похож на костыль...

Transform.Translate()


X.cor.R (Prologue)
 
Сообщение
Цитата NapalmRain ()
Нет ли случайно подобного метода и для перемещения по координатам?
Потому что что-то мне подсказывает, что мой метод больше похож на костыль...

Transform.Translate()

Автор - Левша
Дата добавления - 14 Янв 2014 в 08:20
seamanДата: Вт, 14 Янв 2014, 08:41 | Сообщение # 5
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Vector3.Lerp
 
СообщениеVector3.Lerp

Автор - seaman
Дата добавления - 14 Янв 2014 в 08:41
NapalmRainДата: Вт, 14 Янв 2014, 09:49 | Сообщение # 6
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Премного благодарен!
Вечером попробую переделать так.
Да. Благодарю. Вопрос закрыт, всё успешно.
 
СообщениеПремного благодарен!
Вечером попробую переделать так.
Да. Благодарю. Вопрос закрыт, всё успешно.

Автор - NapalmRain
Дата добавления - 14 Янв 2014 в 09:49
Форум Игроделов » UNITY3D » ОБЩИЕ ВОПРОСЫ » Плавный поворот камеры скриптом
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024