При стрельбе нужно передавать ссылку на стреляющего игрока в его пулю.
|
Навскидку:
скрипт на игроке.
скрипт на префабе пули.
При клацании кнопки "агоньбатареяжгитеффсех!" скрипт игрока спавнит префаб пули. При этом он получает GameObject - пулю. Через этот GameObject он вызывает .GetComponent(имя_скрипта_пули_можно_в_кавычках) и получает ссылку на скрипт этой конкретной пули. А там уже можно установить переменную напрямую. Т.е. что-то типа такого будет:
var BulletPrefab:GameObject;
...
var goddamnFuckinKillerBullet = GameObject.Instantiate(bullet_prefab, transform.position, transform.rotation);
goddamnFuckinKillerBullet.GetComponent(bullet_scri pt).PlayerVar = gameObject;
|
Также нужно в попавшего игрока обращаться потом что бы пересчитать его хелсы
|
А в скрипте пули (если пуля - объект с коллайдером... Я, например, люблю делать партикловые пули) мы имеем OnCollisionEnter, который получает объект типа Collision, в котором мы найдём и collider, и gameObject. А уж через gameObject можно получить и скрипт другого игрока. А если данный скрипт на этом gameObject не найден - значит мы ударились в стену.
Нюанс правда: если у нас скрипт игрока висит на некотором пивоте, к которому присобачен объект с коллайдером - то Collision вернёт нам объект с коллайдером, на котором, ессно, никакого скрипта нету. Либо доставать через transform.parent(.patent.parent.parent.parent, иногда и так, да...), либо через transform.root (но тогда низя будет вкладывать кораблики в другие объекты, например, пустые пивоты - а это удобно для организации сцены).
Кстати, из Collider и Transform тоже можно вытащить скрипт через GetComponent. Потому что они все наследованы от абстрактного Object, в котором лежит этот метод.
Надеюсь, понятно объяснил..