Управление космическим кораблем
|
|
RedBLur | Дата: Среда, 25 Июля 2012, 21:33 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Как можно реализовать управление космическим кораблем?
Сообщение отредактировал RedBLur - Среда, 25 Июля 2012, 21:33 |
|
| |
iNikit | Дата: Среда, 25 Июля 2012, 22:28 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Эм. Прицепить Rigidbody, убрать гравитацию, в скрипте добавлять velocity в transform.forward, либо в направление которое вам нужно. Для поворотов просто изменять его transform.rotation, т.к. transform.forward — это "вперёд" относительно его положения и поворота, как-то так. Но как я понимаю, вам не нужны наталкивающие ответы, либо подсказки, а вы просто хотите что бы мы написали скрипт за вас и отдали за спасибо, верно?
Самый лучший юзер GCUP :3
Сообщение отредактировал iNikit - Среда, 25 Июля 2012, 22:29 |
|
| |
RedBLur | Дата: Среда, 25 Июля 2012, 22:54 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Quote (iNikit) Эм. Прицепить Rigidbody, убрать гравитацию, в скрипте добавлять velocity в transform.forward, либо в направление которое вам нужно. Для поворотов просто изменять его transform.rotation, т.к. transform.forward — это "вперёд" относительно его положения и поворота, как-то так. Но как я понимаю, вам не нужны наталкивающие ответы, либо подсказки, а вы просто хотите что бы мы написали скрипт за вас и отдали за спасибо, верно? Я пробывал сделать перемещение корабля при помощи функции AddForce, а AddTorque - повороты корабля, но при повороте корабля, он всеравно летит вперед. Как исправить?
|
|
| |
iNikit | Дата: Четверг, 26 Июля 2012, 00:14 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Ох. Что бы он летел вперёд, делай как-то так: Code rigidbody.velocity = transform.forward * Time.deltaTime * sheepSpeed; И при повороте он будет лететь туда, куда смотрит.
Самый лучший юзер GCUP :3
|
|
| |
monowar71 | Дата: Четверг, 26 Июля 2012, 00:33 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| Держи код из моего бывшего проекта
Code using UnityEngine; using System.Collections;
public class ShipControll : MonoBehaviour {
public float SpeedRotation = 1.0f; public float Speed = 0.0F; public float MaxSpeed; public float MinSpeed; void Update (){ transform.Translate(Vector3.forward * Time.deltaTime * Speed); transform.Rotate(0, Input.GetAxis("Horizontal") * SpeedRotation, 0);
transform.Rotate(Input.GetAxis("Vertical") * SpeedRotation, 0, 0); transform.Rotate(0,0,Input.GetAxis("Strafe")*SpeedRotation*2 ); Speed += Input.GetAxis("Mouse ScrollWheel")*3; if(Speed >= MaxSpeed) Speed = MaxSpeed; if(Speed <= MinSpeed) Speed = MinSpeed;
} void OnGUI(){ GUI.color = Color.red; GUI.Label (new Rect(Screen.width/2+35, Screen.height-49, 100, 500), "скорость:" + Speed); Speed = GUI.HorizontalSlider(new Rect(Screen.width/2, Screen.height-30, 300, 30), Speed, -5.0f, MaxSpeed); }
}
Извиняюсь что не под споилер, пишу с планшета, тут он что то не ставит его.
Мои проекты: Secrets of Space(Reload)
Сообщение отредактировал monowar71 - Четверг, 26 Июля 2012, 00:36 |
|
| |
Левша | Дата: Четверг, 26 Июля 2012, 18:47 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| Quote (iNikit) Эм. Прицепить Rigidbody Оч. не советую использовать Rigidbody как базовый контроллер движения, проблем не оберетесь... Лучше использовать CharacterController, он собственно для того и предназначен.
X.cor.R (Prologue)
|
|
| |
iNikit | Дата: Четверг, 26 Июля 2012, 20:48 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Левша, я практически везде использую rigidbody, так как... гм... с окружением лучше реагирует. Почти всегда пишу своё управление на Rigidbody, иначе нельзя передвигать ящики и т.п. Может и можно но я не знаю как и над этим не с бубном не танцую.
Самый лучший юзер GCUP :3
Сообщение отредактировал iNikit - Четверг, 26 Июля 2012, 20:49 |
|
| |