Управление космическим кораблем [3D]

На нашем ресурсе можно найти множество версий, скриптов управления персонажем, теперь, настала очередь и космических кораблей. Помимо просто управления движением космического аппарата, мы решили пойти дальше и добавить ряд полезных, так сказать, мелочей. Реализована функция стрельбы, физическими объектами, префабами, иначе говоря. Научили наш аппарат вращаться вокруг своей оси, влево или вправо, чтобы крутить различные финты. Есть возможность ускоряться, при условии, если одновременно удерживать «левый шифт и вперед». Если камера закреплена чуть выше, над кораблем, то будут ситуации, что корабль вверх тормашками, поэтому, добавлена функция выравнивания камеры и самого корабля по горизонтали.


Для начала нужно создать подготовить стрельбу и повреждения.

Ловить дамаг будет это маленький скрипт:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Target : MonoBehaviour {

    public void DoAction(float damage)
    {
        Debug.Log(this + " --> Damage: " + damage);
    }
}
Вешаем его на цель для нашего космического истребителя.

Теперь, создадим лазерный луч, или снаряд:

Управление космическим кораблем [3D]

Это может быть обычный цилиндр, выравненный по оси Z.

На снаряд цепляем скрипт:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour {

    public float damage = 15;
    public LayerMask ignoreMask;

    void Start()
    {
        Destroy(gameObject, 5);
    }

    bool IsIgnore(GameObject obj)
    {
        if (((1 << obj.layer) & ignoreMask) != 0)
        {
            return true;
        }

        return false;
    }

    void OnTriggerEnter(Collider coll)
    {
        if (!coll.isTrigger && !IsIgnore(coll.gameObject))
        {
            Target target = coll.GetComponent<Target>();
            if (target != null) target.DoAction(damage);
            Destroy(gameObject);
        }
    }
}
Не забываем, что на снаряде, кроме скрипта должен быть коллайдер в режиме триггера и Rigidbody (с отключенной гравитацией само собой).

И наш звездолет, со следующей иерархией:


Значит, на скриншоте мы видим, родителя SpaceShip, к которому прикреплен скрипт управления и Rigidbody. Дочерние объекты: Helper пустой объект, вспомогательный; Body пустой объект, содержащий модель model и точки откуда вылетают снаряды shotPoint (1) и shotPoint (2).

Модель может быть любая, но иерархия должна быть сохранена (более подробной см. в файлах проекта).

Сразу отметим, что скрипт управления долек от симулятора и находится на стадии беты, но тем не менее, он вполне рабочий и подойдет, чтобы начать разработку какой-нибудь аркады на космо тематику.

Скачать все скрипты и демо проект:
https://www.patreon.com/posts/upravlenie-3d-23168401
Тестировалось на: Unity 2018.2.2

Комментариев 4

Офлайн
Falkonio 14 августа 2018
Stas Artemev,
На шарике гравитация. Дальше ловить координаты клика мышкой. И по вектору от клика к объекту прикладывать импульс на объект - он будет как-бы отталкиваться от места клика. Можно в зависимости от расстояния ещё менять силу.
Офлайн
Light 13 августа 2018
Stas Artemev, не играл, поэтому не знаю, что там за управление.
Офлайн
Stas Artemev 13 августа 2018
Stas Artemev,
Т.е что бы мышка взаимодействовала с шариком как в игре.
Офлайн
Stas Artemev 13 августа 2018
Как сделать управление как в этой игре ? Bouncing Over It with friends
https://store.steampowered.com/app/896880/Bouncing_Over_It_with_friends/
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
  • Яндекс.Метрика