Показать сообщение отдельно
Старый 16.11.2011, 13:27   #1
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Движение 2D космического корабля

Решил написать пример, как можно организовать управление перемещением 2D космическим кораблем.



Ссылка на Web-плеер: http://shgames.ru/unity/astro/

В аттаче пакадж со скриптом и сценой.

Скрипт собственно вот:
using UnityEngine;

public class 
SpaceShipController : MonoBehaviour
{
    public 
float speed = 5; // максимальная скорость корабля в секунду
    
public float rotationSpeed = 90; // максимальный поворот в секунду
    
public Transform shipModel; // сслыка на модель корабля (должна быть дочерним объектом)

    // значение вращения корпуса по умолчанию
    
private Quaternion _shipDefaultRotation;

    
// текущий поворот корпуса
    
private float _shipRotation = 0;
    
// текущая скорость
    
private float _shipSpeed = 0;

    public 
void Start()
    {
        
// сохраняем значение вращения корпуса по умолчанию
        
_shipDefaultRotation = shipModel.localRotation;
    }

    public 
void Update()
    {
        
// скорость корабля с дампингом
        
_shipSpeed = Mathf.Lerp(_shipSpeed, Mathf.Max(Input.GetAxis("Vertical"), 0), 0.1f);
        
// смещаем корабль в перед на нужную величину
        
transform.position += transform.forward * _shipSpeed * speed * Time.deltaTime;

        var 
rot = Input.GetAxis("Horizontal");
        
// вращаем корабль по оси Z
        
transform.rotation *= Quaternion.AngleAxis(rot * rotationSpeed * Time.deltaTime, transform.up);

        
// рассчитываем поврот корпуса корабля с дампингом
        
_shipRotation = Mathf.Lerp(_shipRotation, -rot * 30, 0.1f);
        
// рассчитываем значение поворота корпуса
        
shipModel.localRotation = _shipDefaultRotation * Quaternion.AngleAxis(_shipRotation, Vector3.right);

    }
} 
Желаю удачно разобраться
Вложения
Тип файла: zip AstroUnity.zip (45.5 Кб, 1692 просмотров)
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Friend123 (04.06.2012), Harter (17.11.2011), Nex (16.11.2011), Nuprahtor (21.11.2011), St_AnGer (29.04.2016)