Показать сообщение отдельно
Старый 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(_shipSpeedMathf.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.deltaTimetransform.up);

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

    }

Желаю удачно разобраться
Вложения
Тип файла: zip AstroUnity.zip (45.5 Кб, 901 просмотров)
__________________
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)