Коллайдер и урон (реализация шипов)
|
|
VasaGameDev | Дата: Воскресенье, 03 Августа 2014, 17:56 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Написал скрипт Hp (жизней). Выкладывать не буду так как он простой. Протестил все работает. Теперь я хочу сделать шипы, от прикосновения их у вас отнимается hp. Ничего подобного я в инете не нашел. Но есть инфа что можно это осуществить с помощью коллайдеров. Из одного урока взял кусочек кода не ничего не сработало. Помогите кодом!
Сообщение отредактировал VasaGameDev - Воскресенье, 03 Августа 2014, 17:59 |
|
| |
URGINSAN | Дата: Воскресенье, 03 Августа 2014, 18:18 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| VasaGameDev, тебе нужно сделать триггер на конце шипа, и когда игрок соприкасается с ним, нужно отнимать у него здоровье. Гугли как пользоваться триггерами.
Я на драйве
|
|
| |
allods | Дата: Воскресенье, 03 Августа 2014, 19:05 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| повесь коллайдер на свой шип, поставь галочку на IsTrigger
На перса повесь ригидбади или на сами шипы, отключи физику IsKinematic
и вот функция
Код function OnTriggerEnter (other : Collider) { тут код который отнимает хп висит на шипах: проверяй если это перс и иди к его скрипту с хп,
или скрипт на персе, то проверяй что столкновение с шипами и отнимай прямо у перса хп }
|
|
| |
VasaGameDev | Дата: Воскресенье, 03 Августа 2014, 19:43 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Я пишу на c# это значит просто написать OnTriggerEnter (other : Collider)?
|
|
| |
URGINSAN | Дата: Воскресенье, 03 Августа 2014, 20:44 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| Void сначала
Я на драйве
|
|
| |
МаоДзедун | Дата: Воскресенье, 03 Августа 2014, 21:15 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| Цитата VasaGameDev ( ) Я пишу на c# это значит просто написать OnTriggerEnter (other : Collider)? void OnTriggerEnter (Collider other) {
}
Знакомая попросила переустановить Windows, взял дистрибутив Ubuntu Интеллигенция — самая необразованная часть общества.©Мао Дзэдун Кто не побывал на Великой китайской стене, тот не может считаться китайцем.©Мао Дзэдун
|
|
| |
robertono | Дата: Воскресенье, 03 Августа 2014, 22:49 | Сообщение # 7 |
Чокнутый Кот
Сейчас нет на сайте
| VasaGameDev, а документацию не судьба почитать что ли?
|
|
| |
set16 | Дата: Понедельник, 04 Августа 2014, 05:25 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| http://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html
s c r i p t = G ame O b j e c t . F i n d ( " Player " ) . G e t C omp o n e n t < Hpchar> (); script.hp = script.hp - 1;Добавлено (04.08.2014, 05:25) --------------------------------------------- это писать в OnTriggerEnter
тоесть когда игрок касается соллайдера-триггера срабатывает функция OnTriggerEnter и в ней s c r i p t = G ame O b j e c t . F i n d ( " Player " ) . G e t C omp o n e n t < Hpchar> (); script.hp = script.hp - 1; тоесть ищет обект с именем Player в нем находит скрипт Hpchar и пеняет переменную hp вот весь скрипт.
=>The darkness of distant lands [3D]<=
|
|
| |
Astralangel | Дата: Понедельник, 04 Августа 2014, 08:08 | Сообщение # 9 |
STF Games
Сейчас нет на сайте
| Цитата set16 ( ) тоесть ищет обект с именем Player в нем находит скрипт Hpchar и пеняет переменную hp вот весь скрипт. Так то совет не очень. К GetComponent имеет смысл прибегать если 2 скрипта написаны на разных языках (C# - Javascript), в остальных случаях переменные прекрасно тянутся и без этого, а также, практика показала, что при наличии подобного костыля дико жрутся ресурсы, а значит, всегда нужно писать все скрипты на одном языке, тем более, что это вполне реально.
Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир
Сообщение отредактировал Astralangel - Понедельник, 04 Августа 2014, 08:09 |
|
| |
set16 | Дата: Понедельник, 04 Августа 2014, 08:39 | Сообщение # 10 |
постоянный участник
Сейчас нет на сайте
| к js нельзя использовать getcomponent
и интнрнсно какже они тянутся без этой функцииДобавлено (04.08.2014, 08:39) --------------------------------------------- наверно про статику намикаете. проблем больше
=>The darkness of distant lands [3D]<=
|
|
| |
VasaGameDev | Дата: Понедельник, 04 Августа 2014, 09:33 | Сообщение # 11 |
почетный гость
Сейчас нет на сайте
| Код Public GameObject Vrag;
Void OnTriggerEnter(Collider Vrag) {
if (vrag.gameobject.name == "Player") { Hp=Hp-10; } }
Как сделать чтобы Vrag был равен Vrag из Void OnTriggerEnter(Collider Vrag), чтобы врага можно было выбрать и поставить в инспекторе
|
|
| |
set16 | Дата: Понедельник, 04 Августа 2014, 09:46 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| не пенял вопроса, какой инспектор vrag в функции будет равен тому объекту который попадет в колайдер
=>The darkness of distant lands [3D]<=
|
|
| |
JonLivingston | Дата: Понедельник, 04 Августа 2014, 11:09 | Сообщение # 13 |
почетный гость
Сейчас нет на сайте
| Цитата VasaGameDev ( ) Я пишу на c# это значит просто написать OnTriggerEnter (other : Collider)? В таком случае, перед тем, как писать игры, советую изучить сам C#. Люди, я не пойму, куда вы спешите? В данном разделе форума встречал огромную кучу тем и вопросов, никоим образом не связанных с Unity. Большинство из них отпадает, если просто почитать про ООП или C#. За это, кстати, мне и не нравится Unity, ибо на нем можно написать игру, абсолютно не умея программировать (что очень сближает его с конструкторами). Согласен, это имеет смысл в плане скорости разработки, но абсолютно бесполезно в плане приобретения реального опыта. Попробуйте сделать то же самое на NeoAxis Engine каком-нибудь, и очень удивитесь.
"Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах Наша первая игра Dark Forest Let's play на Dark Forest
|
|
| |
Astralangel | Дата: Понедельник, 04 Августа 2014, 11:18 | Сообщение # 14 |
STF Games
Сейчас нет на сайте
| Цитата set16 ( ) наверно про статику намикаете. проблем больше Для себя интересно просто, каких проблем больше со статикой? Цитата set16 ( ) к js нельзя использовать getcomponent Я видимо волшебством занимался, когда делал перелинковку скриптов на разных ЯП... тык
Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир
Сообщение отредактировал Astralangel - Понедельник, 04 Августа 2014, 11:18 |
|
| |
JonLivingston | Дата: Понедельник, 04 Августа 2014, 11:19 | Сообщение # 15 |
почетный гость
Сейчас нет на сайте
| Цитата set16 ( ) к js нельзя использовать getcomponent Почему нет? В чем тогда смысл давать возможность писать скрипты на двух языках, между которыми нельзя взаимодействовать?
Цитата Astralangel ( ) Так то совет не очень. К GetComponent имеет смысл прибегать если 2 скрипта написаны на разных языках (C# - Javascript), в остальных случаях переменные прекрасно тянутся и без этого, а также, практика показала, что при наличии подобного костыля дико жрутся ресурсы, а значит, всегда нужно писать все скрипты на одном языке, тем более, что это вполне реально. А как, в таком случае, понять, к какому конкретно объекту на сцене я обращаюсь, если скрипт (класс) может относиться к различным объектам? Это не имеет значения, если класс (поле, метод) static, но как быть в других случаях? А GetComponent однозначен, и точно понятно, кого именно ты имеешь ввиду. Хотя, если вы на каждый объект пишете новый скрипт, возможно GetComponent действительно неоправданная функция.
"Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах Наша первая игра Dark Forest Let's play на Dark Forest
|
|
| |
Astralangel | Дата: Понедельник, 04 Августа 2014, 11:27 | Сообщение # 16 |
STF Games
Сейчас нет на сайте
| Цитата JonLivingston ( ) А как, в таком случае, понять, к какому конкретно объекту на сцене я обращаюсь, если скрипт (класс) может относиться к различным объектам? Это не имеет значения, если класс (поле, метод) static, но как быть в других случаях? А GetComponent однозначен, и точно понятно, кого именно ты имеешь ввиду. Хотя, если вы на каждый объект пишете новый скрипт, возможно GetComponent действительно неоправданная функция. Все правильно, от и до. Никак не понять, речь шла о конкретном параметре, который не имеет дублей, в остальном - разумеется нужно прибегать к подтягиванию нужного компонента.
Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир
|
|
| |
set16 | Дата: Понедельник, 04 Августа 2014, 12:47 | Сообщение # 17 |
постоянный участник
Сейчас нет на сайте
| Нельзя создавать экземпляр класса, используя ключевое слово new. Не разрешается использовать не статические члены этого же класса. Он не поддерживает наследование. Невозможно перегрузить методы.
=>The darkness of distant lands [3D]<=
|
|
| |
allods | Дата: Понедельник, 04 Августа 2014, 12:51 | Сообщение # 18 |
почти ветеран
Сейчас нет на сайте
| Цитата VasaGameDev ( ) if (vrag.gameobject.name == "Player") { Hp=Hp-10; }
Вам нужно это
if(vrag.collider.tag=="Player")
vrag.collider.gameObject.GetComponent<"ваш скрипт">().Hp-=10;
на игрока поставить Тэг Player
Сообщение отредактировал allods - Понедельник, 04 Августа 2014, 12:52 |
|
| |
JonLivingston | Дата: Понедельник, 04 Августа 2014, 13:00 | Сообщение # 19 |
почетный гость
Сейчас нет на сайте
| Цитата VasaGameDev ( ) Как сделать чтобы Vrag был равен Vrag из Void OnTriggerEnter(Collider Vrag) Учим С#
"Почему труднее всего на свете заставить птицу поверить в то, что она свободна?" - Ричард Бах Наша первая игра Dark Forest Let's play на Dark Forest
Сообщение отредактировал JonLivingston - Понедельник, 04 Августа 2014, 13:01 |
|
| |
set16 | Дата: Понедельник, 04 Августа 2014, 13:04 | Сообщение # 20 |
постоянный участник
Сейчас нет на сайте
| abrrdada = GetComponent<имя скрипта> ().abrakadabrra; вот такое в с# работает а в js нет что не удобно крайнеДобавлено (04.08.2014, 13:04) --------------------------------------------- abrrdada = GetComponent<имя скрипта> ().abrakadabrra; вот такое в с# работает а в js нет что не удобно крайне
=>The darkness of distant lands [3D]<=
|
|
| |