Помощь в создании передвижения

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Помощь в создании передвижения

Сообщение VileDan 18 окт 2018, 19:14

Доброго времени суток!
Хочу сделать игрульку про космос с видом сверху. Как сделать перемещение корабля ГГ в космическом пространстве, чтобы он всегда следил за мышкой и, например, когда нажимаешь W он за этой мышкой летит, а когда отпускаешь перестает двигаться в эту сторону и может вращаться пока не остановится окончательно.э Тоесть движение за мышкой только по нажатию определенной кнопки, а в остальных случаях по инерции лететь в том же направлении, но с возможностью вращаться по оси. Если можно, накидайте хотя бы каркас скрипта!
VileDan
UNец
 
Сообщения: 9
Зарегистрирован: 30 сен 2018, 20:36

Re: Помощь в создании передвижения

Сообщение Saltant 18 окт 2018, 22:16

Попробуй вот так. Если коротко, то создаешь виртуальный плейн, далее испускаешь луч и отслеживаешь его пересечение с этим виртуальным плейном в точке где находится указатель мыши, это будет поворот объекта который описан в середине кода, в самом конце кода идут обычные инпуты WASD клавиш на движение по осям. Плавность и скорость можешь варьировать сам как хочешь. Но мне кажется ты совсем новичок и бездумно копипастить код в свой проект думаю не очень хорошая идея, экспериментируй.
Синтаксис:
Используется csharp
public float Speed;
public GameObject MainCamera;

void Update(){
        Plane tmpPlane = new Plane(Vector3.up, transform.position);
        Ray ray = MainCamera.ScreenPointToRay(Input.mousePosition);
        float hitDistance = 0;
       
        if(tmpPlane.Raycast(ray, out hitDistance))
        {
                Vector3 targetPoint = ray.GetPoint(hitDistance);
                Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position);
                targetRotation.x = 0;
                targetRotation.z = 0;
                PlayerMeshObj.transform.rotation = Quaternion.Slerp(PlayerMeshObj.transform.rotation, targetRotation, Time.deltaTime * 5f);
        }
       
        if(Input.GetKey(KeyCode.W))
                transform.Translate(Vector3.forward * Time.deltaTime * Speed);
        if(Input.GetKey(KeyCode.S))
                transform.Translate(Vector3.back * Time.deltaTime * Speed);
        if(Input.GetKey(KeyCode.A))
                transform.Translate(Vector3.left * Time.deltaTime * Speed);
        if(Input.GetKey(KeyCode.D))
                transform.Translate(Vector3.right * Time.deltaTime * Speed);
}
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 16