Решил написать пример, как можно организовать управление перемещением 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);
}
}
Желаю удачно разобраться