|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#31
|
||||
|
||||
Задать направление для героя (куда повернут), и наносить урон только если рядом (в пределах досягаемости) в этом направлении есть враг.
jmp $ ; Happy End! The Cake Is A Lie. |
#32
|
||||
|
||||
Да, направление есть. Но, не совсем понял идею. Это, при нажатии атаки каждый раз делать проверку в н-количестве координат в направлении атаки от спрайта?
|
#33
|
||||
|
||||
Проще посчитать расстояние от координат врагов до координат плеера и сравнить с требуемым. При этом накладывается дополнительное условие, что если игрок повернут влево, то X < Player_X, если вправо - X > Player_X.
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Царь (16.05.2013)
|
#34
|
||||
|
||||
Благодарю всех кто отозвался на мою просьбу и помог советами ) Особенно Bargest, Ваши советы бесценны для меня )
- Теперь у меня новый уровень проблем. Если с гравитацией и движением я уже проблем не ощущаю и с легкостью прописал начальный АИ монстра и смог его заставить бегать за героем, то теперь я не могу понять как заставить их взаимодействовать. Прописал как написано в примерах Цитата:
И не хочет! не исчезает. Даже пытался для примера сделать так: Цитата:
В таймере так же добавил: " DXSpriteEng.Dead;" - не понял зачем, но добавил. Что делать? ( - Конечно, это наверно еще более примитивный вопрос, но все же, как работать с несколькими Unit? Как прочитал, достаточно связывать их в uses и писать далее, в общем, типа хорошая сортировка. Но, пытался отдельно прописать юнит для своего героя и для монстра, но у меня не получается очеловеченная взаимосвязь. Одно другое не видит. Можете, пожалуйста, подсказать какую-то литературу на эту тему, а то гугл не дает адекватных результатов на мой запрос. - Еще у меня начала выскакивать ошибка stack overflow, что, как я прочитал, тонко намекает, что у меня перегрузка и где-то происходит утечка и лишняя работа. Как это можно проверить? И можно ли? |
#35
|
||||
|
||||
Stack overflow - точно нет рекурсии? Может быть неявной. Или какие-нибудь гигантские массивы локальные?
Взаимодействие - не надо никого никак связывать. Когда плеер один, известны его координаты. Следовательно, любой монстр стремится дойти до этих координат, и когда расстояние меньше расстояния удара - наносит удар. Обработчик ударов - одинаковый, просто вычетает жизни. Как только жизни любого монстра стали <= 0, то монстр исчезает, а если это был плеер - GameOver. jmp $ ; Happy End! The Cake Is A Lie. |
#36
|
||||
|
||||
- Хм... Вообще, начало появляться, когда я весело начал добавлять Collision при работе со спрайтами. Возможно, стоит убрать. Как бы, мне пока не всё до конца понятно и поэтому точно пояснить не могу, простите.
- То есть сделать как Вы ранее говорили, - учет расстояния от края спрайта. Это значит в АИ моба прописать, что если он на определенном расстоянии от Героя, то включается атака. Но если герой отбежит? Или атакует в ответ, дабы прервать атаку монстра? Посоветуете как это учесть? Я полагаю можно включить некоторый счетчик, который включается при атаке монстра. И настоящая атака активируется когда счетчик подходит к нулю (там например дать секунду, две, три), а до, монстр как бы замахивается и у героя есть шанс отбежать. Я правильно мыслю? Оо Примерно то же можно прописать на героя. Если у него анимация атаки и координата монстра неподалеку, то он попадает. - Кстати, а как осуществить создания множества монстров? К примеру с помощью for минимум мобов to максимум мобов do - Ну и собственно я так и не пришел к тому, что бы монстр исчезал при взаимодействии с героем Последний раз редактировалось Царь, 20.05.2013 в 00:46. |
#37
|
||||
|
||||
Что ж, со взаимодействием я относительно разобрался, благодаря координатам. Но, теперь у меня есть две проблемы:
- Первая как и была, - как и где можно прописать создание нескольких монстров? - Вторая сложнее. Я решил поиграться с процедурами для удобства и наткнулся на такую вот ошибку: Цитата:
Где Enemy это класс TEnemy в котором вписан мой монстр, а Hero это THero класс, где все данные о герое. Собственно, при возникании взаимодействия и, соответственно запуске процедуры, у меня выскакивает ошибка, которую моему неразвитому программному мозгу не понять. Можете ли что либо подсказать по этому поводу? |
#38
|
||||
|
||||
Даже удумал сделать общий вычет повреждений, как Вы и предлагали ранее.
Цитата:
|
#39
|
||||
|
||||
Во-первых, не надо превращать форум в чат. Есть кнопка "Редактировать сообщение".
Цитата:
Цитата:
Цитата:
И кстати для нанесения удара было бы логичнее сделать Hurt методом класса TUnit, который является общим предком для THero и TEnemy, тогда можно будет вызывать метод этого класса как Enemy.Hurt(Damage). jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Царь (21.05.2013)
|
#40
|
||||
|
||||
Прошу прощения, больше не будет "чата". Что ж, за это время я успел полностью перебрать код, используя новые знания. А то есть я таки разобрался как взаимодействуют Юниты, смог задействовать Collision, избавился от всех перечисленных мною ошибок и, кажется, мой код выглядит красивее )
Благодарю, Bargest, за терпение. Я использую Ваши советы с максимальной пользой ) Правда, теперь у меня новый уровень проблемы. Когда я создаю массу мобов, то при сталкивании с героем они, во-первых: когда достигает один моб героя, активирует столкновение, анимацию атаки и... Атакуют все мобы вне зависимости от расстояния. А во-вторых при смерти исчезают так же все мобы. Как я понял они все связаны, но как тогда заставить их жить самостоятельной жизнью? |
#41
|
||||
|
||||
Счетчики у каждого должны быть свои, а не один на всех. Можно делать счетчик полем класса "TUnit", можно делать динамический массив структур "счетчик-юнит" и добавлять туда создаваемые счетчики. И смерть должна применяться к конкретному юниту. Можно даже в виде удаления из массива.
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Царь (22.05.2013)
|
#42
|
||||
|
||||
Прошу, можете пояснить подробней? А то я, кажется, не до конца понял.
|
#43
|
||||
|
||||
Ну все счетчики, используемые для анимации, "обратный отсчет" для удара и т.д. должны быть личные у каждого юнита.
jmp $ ; Happy End! The Cake Is A Lie. |
#44
|
||||
|
||||
Хм, хорошо, я примерно понимаю как создать динамический массив для юнитов. Но как их добавлять и учитывать при столкновении и выбирать из массива нужный, при столкновении, объект? Извините, если вопрос глупый, пытаюсь уложить идею в голове.
|
#45
|
||||
|
||||
Проверять столкновения каждого юнита с героем отдельно.
jmp $ ; Happy End! The Cake Is A Lie. |