Нанесение урона raycast'ом через RPC [Решено]

Нанесение урона raycast'ом через RPC [Решено]

Сообщение ZakkArn 07 янв 2015, 19:56

Доброго времени суток!) В общем, суть проблемы: есть игрок, у него разные части тела представлены триггерами, когда один игрок стреляет в другого (по триггеру, через рейкаст) этот тригер должен терять здоровье и в последствии отключаться. Если этим методом атаковать не игровые объекты (например тупо куб) то все работает прекрасно, но если этот триггер является частью игрока (например на голове, и стрельба идет по голове), то этого триггера вообще как будто нету, т.е. луч как будто идет минуя его, из-за чего это может быть?
Скрипт стрельбы:

Синтаксис:
Используется csharp
public void Shooting()
        {


                if (photonView.isMine) {
                        int damage=10;
                        RaycastHit hit;
                        Ray ray= Camera.main.ScreenPointToRay(Input.mousePosition);
                        if (Physics.Raycast(ray, out hit,400))
                        {
                                if (hit.transform.tag=="head")
                                {
                                       
                                        hit.transform.GetComponent<PhotonView>().RPC("AddDamage", PhotonTargets.All, damage);
                       
                                }
                               
                               
                        }
                       
                }
        }



скрипт на триггере:

Синтаксис:
Используется csharp
        [RPC]
        public void AddDamage(int damage)
        {
                if (photonView.isMine) {
               
                                                headHp -= damage;
               
                                                if (headHp <= 0) {
                                                                gameObject.SetActive (false);
                                                }
               
               
                                }
        }
Последний раз редактировалось ZakkArn 09 янв 2015, 18:16, всего редактировалось 1 раз.
Last Survivor- _ttp://vk.com/lastsurvivor
ZakkArn
UNIт
 
Сообщения: 102
Зарегистрирован: 18 ноя 2014, 21:21

Re: Нанесение урона raycast'ом через RPC

Сообщение ZakkArn 08 янв 2015, 11:29

Ни кто не сталкивался с такой проблемой?
Last Survivor- _ttp://vk.com/lastsurvivor
ZakkArn
UNIт
 
Сообщения: 102
Зарегистрирован: 18 ноя 2014, 21:21

Re: Нанесение урона raycast'ом через RPC

Сообщение MAXYA159 08 янв 2015, 20:01

Вот ты говоришь: "когда попадаешь, например, в голову..."
А разве на голове есть компонент PhotonView?
Тогда уж надо получать корень трансформа (игрока, которому эта голова принадлежит) - transform.root
Завтра слон рюкзачный, но, заметьте - шиншилла драматизирует машиностроение
Аватара пользователя
MAXYA159
UNец
 
Сообщения: 8
Зарегистрирован: 29 ноя 2012, 18:28
Откуда: Пермь-Сити
Skype: maxya159
  • Сайт

Re: Нанесение урона raycast'ом через RPC

Сообщение ZakkArn 08 янв 2015, 20:10

MAXYA159 писал(а):Вот ты говоришь: "когда попадаешь, например, в голову..."
А разве на голове есть компонент PhotonView?
Тогда уж надо получать корень трансформа (игрока, которому эта голова принадлежит) - transform.root

На голове есть PhotonView, говорю же, если этот триггер не является дочерним к игроку, то все работает как и планировалось. А тут дело даже не в RPC, ибо не работает именно рейкаст, он почему-то не видит триггер.
Т.е. если сделать так:

Синтаксис:
Используется csharp
        if (Physics.Raycast (ray, out hit, 400)) {
if (hit.transform.tag == "enemy") {
Debug.Log("HIT");
}
}
 



То нефига не будет происходить.
Last Survivor- _ttp://vk.com/lastsurvivor
ZakkArn
UNIт
 
Сообщения: 102
Зарегистрирован: 18 ноя 2014, 21:21

Re: Нанесение урона raycast'ом через RPC

Сообщение MAXYA159 08 янв 2015, 20:12

ZakkArn писал(а):А тут дело даже не в RPC, ибо не работает именно рейкаст, он почему-то не видит триггер.


Может, проблема в тэге? Он на этом объекте стоит?
Завтра слон рюкзачный, но, заметьте - шиншилла драматизирует машиностроение
Аватара пользователя
MAXYA159
UNец
 
Сообщения: 8
Зарегистрирован: 29 ноя 2012, 18:28
Откуда: Пермь-Сити
Skype: maxya159
  • Сайт

Re: Нанесение урона raycast'ом через RPC

Сообщение ZakkArn 08 янв 2015, 20:17

MAXYA159 писал(а):
ZakkArn писал(а):А тут дело даже не в RPC, ибо не работает именно рейкаст, он почему-то не видит триггер.


Может, проблема в тэге? Он на этом объекте стоит?


Вот смотрите, есть объект, который условно является головой (но по сути это куб-триггер). Если этот объект я поставил просто так на сцену, то он прекрасно "убивается", но если я после этого этот же триггер сделаю дочерним к игроку, то уже даже рейкаст через него не проходит. Но это точно такой же триггер, который секунду назад, будучи не к чему не привязанным прекрасно убивался.
Last Survivor- _ttp://vk.com/lastsurvivor
ZakkArn
UNIт
 
Сообщения: 102
Зарегистрирован: 18 ноя 2014, 21:21

Re: Нанесение урона raycast'ом через RPC

Сообщение ZakkArn 09 янв 2015, 10:42

актуально
Last Survivor- _ttp://vk.com/lastsurvivor
ZakkArn
UNIт
 
Сообщения: 102
Зарегистрирован: 18 ноя 2014, 21:21

Re: Нанесение урона raycast'ом через RPC

Сообщение Syberex 09 янв 2015, 11:08

Посмотри во что попадает твой рейкаст:
Синтаксис:
Используется csharp
if (Physics.Raycast (ray, out hit, 400)) {
        if (hit.transform.tag == "enemy") {
                Debug.Log("enemy: "+hit.gameObject.name);
        }
        else
                Debug.Log("other collider: "+hit.gameObject.name);
}
 

наверняка упирается в другой коллайдер, без тега...
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Нанесение урона raycast'ом через RPC

Сообщение ZakkArn 09 янв 2015, 11:59

Syberex писал(а):Посмотри во что попадает твой рейкаст:
Синтаксис:
Используется csharp
if (Physics.Raycast (ray, out hit, 400)) {
        if (hit.transform.tag == "enemy") {
                Debug.Log("enemy: "+hit.gameObject.name);
        }
        else
                Debug.Log("other collider: "+hit.gameObject.name);
}
 

наверняка упирается в другой коллайдер, без тега...


Хм.. когда луч попадает именно по триггеру (точно по триггеру,ибо я увеличил его очень сильно), то определяется, почему-то, что попал не по триггеру, а по родительскому объекту..
Last Survivor- _ttp://vk.com/lastsurvivor
ZakkArn
UNIт
 
Сообщения: 102
Зарегистрирован: 18 ноя 2014, 21:21

Re: Нанесение урона raycast'ом через RPC

Сообщение ZakkArn 09 янв 2015, 12:47

т.е. коллайдер триггера почему-то определяется как продолжение коллайдера родителя. В каком направлении капать, чтобы решить эту проблему?
Last Survivor- _ttp://vk.com/lastsurvivor
ZakkArn
UNIт
 
Сообщения: 102
Зарегистрирован: 18 ноя 2014, 21:21

Re: Нанесение урона raycast'ом через RPC

Сообщение ZakkArn 09 янв 2015, 18:15

Проблема решилась заменой
Синтаксис:
Используется csharp
 hit.transform.
на
Синтаксис:
Используется csharp
hit.collider.transform.gameObject.
. Хоть и не понял, почему первый вариант не рабочий, ну и ладно, главное работает).
Last Survivor- _ttp://vk.com/lastsurvivor
ZakkArn
UNIт
 
Сообщения: 102
Зарегистрирован: 18 ноя 2014, 21:21

Re: Нанесение урона raycast'ом через RPC [Решено]

Сообщение ZakkArn 09 янв 2015, 18:18

+ еще убрал коллайдер с родительского объекта
Last Survivor- _ttp://vk.com/lastsurvivor
ZakkArn
UNIт
 
Сообщения: 102
Зарегистрирован: 18 ноя 2014, 21:21

Re: Нанесение урона raycast'ом через RPC [Решено]

Сообщение Syberex 10 янв 2015, 11:31

ZakkArn писал(а):+ еще убрал коллайдер с родительского объекта

Проблема решилась именно этим, а не тем что поменял коде :)
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт


Вернуться в Photon

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2