На сцене есть 2 объекта player и enemyAI с тегами Player и Enemy. При стрельбе возникает такой косяк - при рикошете или взрыве ракеты убивает самого же стреляющего. (дело в радиусе взрыва, но не в этом суть!) Есть 2 скрипта для Игрока и Enemy, например для Игрока вешается - PlayerDamageManager. Тут считается урон только по игроку (по крайней мере я так хочу сделать) Не получается сделать проверку - если я стрельнул, то не считаем HP -= damage Делаю так в скрипте Игрока
Код
if (!player) { HP -= damage; }
Но тогда мне вообще никто не наносит урон. Ставлю if (player), то могу только я сам себе наносить урон - тут как бы всё ок с таким условием. Когда назначаю
Код
if (enemy) { HP -= damage; }
То ничего не происходит. В void Start() сделал так
Код
void Start() { player = GameObject.FindWithTag("Player"); enemy = GameObject.FindWithTag("Enemy"); Debug.Log("Player is " + player); Debug.Log("Enemy is " + enemy); }
В логе выводит:
Player is player Enemy is enemyAI
Так в чем же проблема тогда? Вот полный код из PlayerDamageManager Доступно только для пользователей Помогите пожалуйста разобраться!
Сообщение отредактировал Sider - Четверг, 16 Июля 2015, 11:34
ты проверил, что если объекта с тегом "Player" не существует на сцене, то... {}
ЦитатаSider ()
if (enemy)
ты проверил, что если объект с тегом "Enemy" существует на сцене, то... {} тебе же нужно запоминать, кем была выпущена пуля или ракета, так что ли? смотри откуда у тебя вызывается ApplyDamage(float damage) и передавай не один, а два параметра: ApplyDamage(damage, characterTypeSource), вторым параметром выступает тип персонажа, который выпустил пулю/ракету/гранату
перепиши public override bool ApplyDamage(float damage) как public override bool ApplyDamage(float damage, int characterType) { if(characterType == 1)//если пуля от персонажа { Debug.Log("Xaxaxa! CAM CEBR"); } else { HP -= damage; Debug.Log("It's not a GODMODE!");} ...} http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer