Страница 1 из 1

Стрельба в 2D

СообщениеДобавлено: 28 мар 2020, 12:31
Dis46
Здравствуйте, я еще новичок в юньке, нужна помощь. У меня есть проект, в нем игрок движется по двум осям, скажем есть враг, мне необходимо чтоб при нажатии на кнопку, вылетала пуля от игрока и до близлежащего противника(а их несколько ), есть ли у кого-нибудь совет как это правильно сделать, а лучше скрипт чтоб я его разобрал, заранее спасибо

Re: Стрельба в 2D

СообщениеДобавлено: 28 мар 2020, 13:16
1max1
Делаешь врагов, ставишь им тег "Enemy", делаешь префаб пульки, вешаешь на нее скрипт Bullet, на игрока - Player, заполняешь поля в инспекторе.
Метод GetNearEnemy получает ближайшего врага, LookAt2D поворачивает transform.up пульки в сторону позиции, берешь отсюда http://www.unity3d.ru/distribution/view ... 86#p279637
Всё остальное думаю понятно.
Синтаксис:
Используется csharp
class Bullet : MonoBehaviour
{
    [SerializeField] float speedMove;

    void Update()
    {
        transform.position += transform.up * speedMove * Time.deltaTime;
    }
}

class Player : MonoBehaviour
{
    [SerializeField] GameObject bulletPrefab;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            var bullet = Instantiate(bulletPrefab);
            var enemies = GameObject.FindGameObjectsWithTag("Enemy");
            var nearEnemy = GetNearEnemy(transform, enemies);
            bullet.transform.LookAt2D(nearEnemy.transform.position);
        }
    }

    GameObject GetNearEnemy(Transform player, GameObject[] enemies)
    {
        int near = 0;

        float temp = float.MaxValue;

        for (int i = 0; i < enemies.Length; ++i)
        {
            float d = (player.position - enemies[i].transform.position).sqrMagnitude;

            if (d < temp)
            {
                temp = d;
                near = i;
            }
        }

        return enemies[near];
    }
}

Re: Стрельба в 2D

СообщениеДобавлено: 29 мар 2020, 10:31
Dis46
Огромное спасибо. Очень помог

Re: Стрельба в 2D

СообщениеДобавлено: 29 мар 2020, 13:01
Saltant
Dis46 писал(а):Огромное спасибо. Очень помог

Кто то гуглить не умеет