Стрельба в 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
Огромное спасибо. Очень помог