![]() |
Score
Вот создаються двадцать кубиков:
Global bonus = CreateCube() EntityType bonus,Typebonus HideEntity bonus For x=1 To 20 s.score = New score s\obj = CopyEntity (bonus) PositionEntity bonus,Rand(-20,20),0,Rand(-20,20) Next затем нужно чтобы при столкновении с определенным кубиком, удалялся имено тот кубик с которым игрок столкнулся: If EntityCollided (player,Typebonus) Then bonuses = bonuses +1 FreeEntity s\obj End If оно чот выдает что нету такого обьекта, как зделать чтобы удалялся тот кубик с которым сталкуеться игрок? |
Ответ: Score
Если не ошибаюсь, надо делать так.
Добавь в тип еще поле hp(ну или что-то свое) s\hp=1 If EntityCollided (player,Typebonus) Then bonuses = bonuses +1 s\hp=0 End If If s\hp=0 FreeEntity s\obj Delete s End If Писал по памяти, и в браузере. Но ты все-таки попробуй. |
Ответ: Score
когда происходит столкновение
та же ошибка : s\hp = 0 - object does not exist |
Ответ: Score
У тебя s при удалении - фиксированная ссылка, не факт, что на тот объект, который столкнулся.
Надо перебрать все объекты score Сравнить s\obj с коллизнувшимся Если совпадают - удалить сначала s\obj, потом s Разве не очевидно? Есть кстати способ уйти от полного перебора, но пока с этим разберись. |
Ответ: Score
перебрал
теперь оно удаляет все кубики. как Сравнить s\obj с коллизнувшимся ? чтобы удалило именно тот который столкнулся |
Ответ: Score
А, ну да, затупил :)
Встречаем еще порцию говнокода :) s\hp=1 For s.название_типа = Each название_типа If EntityCollided (player,Typebonus) Then bonuses = bonuses +1 s\hp=0 End If If s\hp=0 FreeEntity s\obj Delete s End If Next Вроде должно работать. |
Ответ: Score
Код:
Graphics3D 800,600,0,2 Цитата:
|
Ответ: Score
а все догнал, херить сразу полученный хендл (командой EntityCollided) собственно =) чет ступил
|
Ответ: Score
Цитата:
Потом удалять (при условии что сравнение совпало, естественно) |
Ответ: Score
всё, работает правильно. всем пасиба:-D
|
Ответ: Score
посмотрел выше код ,зачем вот это выражение For i=1 To 20 ?
|
Ответ: Score
Цитата:
|
Ответ: Score
я пoнимаю что двадцать кубиков мы создаём .И что i=1 To 20 . Но i нигде потом не встречается в программе , i даже кагбудто к кубикам не принадлежит.
|
Ответ: Score
а ты напиши без i и посмотри что будет.
|
Ответ: Score
Shyrikk, RTFM и не задавай глупых вопросов
|
Ответ: Score
Цитата:
if i=13 then EntityColor cub,128,255,0 end if в результате все кубы будут серые, а 13 зеленым |
Ответ: Score
учите синтаксис мать вашу!!! цикл for next исполняется для тех пор пока какая то определенная заданная переменная (в нашем случае это i) не будет больше допустимого значение (здсь. это 20)
|
Ответ: Score
|
Часовой пояс GMT +4, время: 16:10. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot