Делаешь врагов, ставишь им тег "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];
}
}