Понедельник, 18 Ноября 2024, 18:24

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Управление космическим кораблем
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
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг