Ограничение поворота орудийных башен - Форум Игроделов
Пт, 17 Май 2024, 06:58 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Ограничение поворота орудийных башен ([JS])
Ограничение поворота орудийных башен
illeДата: Пт, 10 Июн 2011, 16:40 | Сообщение # 1
 
Сообщений: 10
Награды: 0
Репутация: 0
Статус: Offline
Всем привет! Есть такой скрипт:
Code

var rotSpeed : float = 30; // скорость поворота орудий
//ткуйщий угол поворота орудий
var thisRotation : float = 0;

function Update () {
// сведение передних групп туреллей клавишей E,Q
if(transform.name == "FrontCannon"){
if (Input.GetKey (KeyCode.E)){
if(thisRotation > -110) {
transform.Rotate(Vector3(0, rotSpeed * Time.deltaTime, 0));
thisRotation -= rotSpeed * Time.deltaTime;
}
}
if (Input.GetKey (KeyCode.Q)) {
if(thisRotation < 110) {
transform.Rotate(Vector3(0, -rotSpeed * Time.deltaTime, 0));
thisRotation += rotSpeed * Time.deltaTime;
}
}
}

// сведение задних групп туреллей клавишей E,Q.
if(transform.name == "BackCannon"){
if (Input.GetKey (KeyCode.Q)) {
if(thisRotation < 110) {
transform.Rotate(Vector3(0, rotSpeed * Time.deltaTime, 0));
thisRotation += rotSpeed * Time.deltaTime;
}
}
if (Input.GetKey (KeyCode.E)) {
if(thisRotation > -110) {
transform.Rotate(Vector3(0, -rotSpeed * Time.deltaTime, 0));
thisRotation -= rotSpeed * Time.deltaTime;
}
}
}

// поворот передних групп A,D
if(transform.name == "FrontCannon"){
if (Input.GetKey (KeyCode.A)) {
if(thisRotation > -110) {
transform.Rotate(Vector3(0, rotSpeed * Time.deltaTime, 0));
thisRotation -= rotSpeed * Time.deltaTime;
}
}
if (Input.GetKey (KeyCode.D)) {
if(thisRotation < 110) {
transform.Rotate(Vector3(0, -rotSpeed * Time.deltaTime, 0));
thisRotation += rotSpeed * Time.deltaTime;
}
}
}

// поворот задних групп A,D
if(transform.name == "BackCannon"){
if (Input.GetKey (KeyCode.A)){
if(thisRotation > -110) {
transform.Rotate(Vector3(0, rotSpeed * Time.deltaTime, 0));
thisRotation -= rotSpeed * Time.deltaTime;
}
}
if (Input.GetKey (KeyCode.D)) {
if(thisRotation < 110) {
transform.Rotate(Vector3(0, -rotSpeed * Time.deltaTime, 0));
thisRotation += rotSpeed * Time.deltaTime;
}
}
}
}


Скрипт поворачивает орудийные башни на корабле. Башни делятся на передние"FrontCannon" и задние "BackCannon". клавиши QE сводят башни. клавиши AD поворачивают башни синхронно. Проблема в ограничении угла поворота. Если управлять только одной группой клавиш то все работает - башня поворачивается на определенный максимальный угол и останавливается но если перейти на управление другой группой клавиш то башня продолжает движение.

Как сделать что бы при управлении двумя группами клавиш действовало ограничение поворота?


Всегда готов!
 
СообщениеВсем привет! Есть такой скрипт:
Code

var rotSpeed : float = 30; // скорость поворота орудий
//ткуйщий угол поворота орудий
var thisRotation : float = 0;

function Update () {
// сведение передних групп туреллей клавишей E,Q
if(transform.name == "FrontCannon"){
if (Input.GetKey (KeyCode.E)){
if(thisRotation > -110) {
transform.Rotate(Vector3(0, rotSpeed * Time.deltaTime, 0));
thisRotation -= rotSpeed * Time.deltaTime;
}
}
if (Input.GetKey (KeyCode.Q)) {
if(thisRotation < 110) {
transform.Rotate(Vector3(0, -rotSpeed * Time.deltaTime, 0));
thisRotation += rotSpeed * Time.deltaTime;
}
}
}

// сведение задних групп туреллей клавишей E,Q.
if(transform.name == "BackCannon"){
if (Input.GetKey (KeyCode.Q)) {
if(thisRotation < 110) {
transform.Rotate(Vector3(0, rotSpeed * Time.deltaTime, 0));
thisRotation += rotSpeed * Time.deltaTime;
}
}
if (Input.GetKey (KeyCode.E)) {
if(thisRotation > -110) {
transform.Rotate(Vector3(0, -rotSpeed * Time.deltaTime, 0));
thisRotation -= rotSpeed * Time.deltaTime;
}
}
}

// поворот передних групп A,D
if(transform.name == "FrontCannon"){
if (Input.GetKey (KeyCode.A)) {
if(thisRotation > -110) {
transform.Rotate(Vector3(0, rotSpeed * Time.deltaTime, 0));
thisRotation -= rotSpeed * Time.deltaTime;
}
}
if (Input.GetKey (KeyCode.D)) {
if(thisRotation < 110) {
transform.Rotate(Vector3(0, -rotSpeed * Time.deltaTime, 0));
thisRotation += rotSpeed * Time.deltaTime;
}
}
}

// поворот задних групп A,D
if(transform.name == "BackCannon"){
if (Input.GetKey (KeyCode.A)){
if(thisRotation > -110) {
transform.Rotate(Vector3(0, rotSpeed * Time.deltaTime, 0));
thisRotation -= rotSpeed * Time.deltaTime;
}
}
if (Input.GetKey (KeyCode.D)) {
if(thisRotation < 110) {
transform.Rotate(Vector3(0, -rotSpeed * Time.deltaTime, 0));
thisRotation += rotSpeed * Time.deltaTime;
}
}
}
}


Скрипт поворачивает орудийные башни на корабле. Башни делятся на передние"FrontCannon" и задние "BackCannon". клавиши QE сводят башни. клавиши AD поворачивают башни синхронно. Проблема в ограничении угла поворота. Если управлять только одной группой клавиш то все работает - башня поворачивается на определенный максимальный угол и останавливается но если перейти на управление другой группой клавиш то башня продолжает движение.

Как сделать что бы при управлении двумя группами клавиш действовало ограничение поворота?

Автор - ille
Дата добавления - 10 Июн 2011 в 16:40
Форум Игроделов » UNITY3D » СКРИПТИНГ » Ограничение поворота орудийных башен ([JS])
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024