Тема: _Epic
Показать сообщение отдельно
Старый 22.07.2012, 21:37   #2
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: _Epic

При стрельбе нужно передавать ссылку на стреляющего игрока в его пулю.
Навскидку:
скрипт на игроке.
скрипт на префабе пули.

При клацании кнопки "агоньбатареяжгитеффсех!" скрипт игрока спавнит префаб пули. При этом он получает 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, в котором лежит этот метод.

Надеюсь, понятно объяснил..
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Taugeshtu за это полезное сообщение:
EvilChaotic (23.07.2012), ЕвГен (16.04.2014)