![]() |
Вот код:
Код:
If EntityCollided( car,TWALL) Код:
sp1=LoadSprite("img\1.bmp")(car) Кто может помочь? |
1. Каждый раз грузить/удалять спрайт накладно.
Загрузи его при старте уровня и спрячь из виду командой HideEntity sp1 2. Привязку непрвавильно пишешь, вот и получаешь ошибку. Родительский объект должен быть одним из параметров команды LoadSprite, а у тебя он сам по себе... Попробуй так сделать EntityParent sp1,car (посмотри в хелпе про эту команду, я мог че-нить перепутать) Этим ты привяжешь спрайт к машине. Теперь ставишь его в нужное место относительно машины командой PositionEntity sp1,x,y,z там, где проверка на столкновение, делаешь спрайт видимым если (машина столкнулась со стенкой) ShowEntity sp1 иначе HideEntity sp1 конец_если |
Спасибо, вот только проблема со стороной отображения спрайта осталась - если в правую стенку врезаюсь - все почти как надо(спрайт рядом с машинкой, подскажи как его подвинуть к ней вплотную), а вот если в левую стенку врезаюсь, то спрайт все равно с правой стороны отображаеться.
|
Пока Вы думаете над мои вопросом(изложен выше), я задам еще один :):SOS:
Вот код: Код:
If KeyDown(208) P.S. Не забудьте о вопросах: 1. со стороной отображения спрайта 2. спрайт рядом с машинкой, подскажи как его подвинуть к ней вплотную |
Точно не скажу как сделать(нет блитца под рукой), но есть команда LinePick, которая позволяет получить координаты, так вот делаешь ЛайнПик влево, вправо и вперед. Если команда вернула НЕ НОЛЬ, то она (точнее смежные ей команды) вернет и координаты пересечения воображаемого луча с объектом. Выводи спрайт в этих координатах. Тогда и привязка не нужна к машинке...
|
Чесно говоря без примера не могу понять, мне лучше на примере показывать(не обязательно на моем коде), так я лучше понимаю(сам не знаю почему), так что буду ждать других ответов или когда у тебя Блиц окажеться под рукой :)
|
До решения вопроса о нажатии на кнопку(208) я сам додумался :P (мечтал использовать этот смайл) :lol:
На всякий случай если кому-то интересно, вот ответ: Код:
If KeyDown(208) 1. со стороной отображения спрайта 2. спрайт рядом с машинкой, подскажи как его подвинуть к ней вплотную |
Вложений: 1
Я написал пример про спрайт на стенке, смотри, должно помочь.
расширение файла необходимо ПЕРЕИМЕНОВАТЬ в RAR! Цитата:
|
Не поможет. :blink:
Вот нормальный код, найдите пару десятков отличий. А заодно замерьте во сколько раз повісилась производительность...:lol: Код:
Graphics3D 1024,768,32,1 |
Столкновения мешей со спрайтами можно посмотреть в FAQ - создаём свой FPS : Выстрелы (или аналогичную статью на blitzetc)
|
Diplomat, спасибо за код (я не знал про GetEntityType, за нее и благодарю).
Насчет раздела мне тоже интересно. |
Нема за що... :ok:
|
А может все таки поясните, а то я чего то не понял!
А тему суда поместил, потомучто спрайт - 2-D изображение. |
потомучто оно так и есть :) ето 2д чтука в 3д пространстве, тоесть плоскость в обьеме
|
Цитата:
|
Я тоже так думал, однако все мои предшествующие темы перенесли в 2D программирование, однако это не важно!
|
Алмины слегка заблудились на собственном форуме :dance:
|
Фоновая музыка (не 3д-окружение) относится к проганью в 2д!
|
Здесь вроде как спрайты обсуждались ;)
|
Цитата:
:offtop: |
Ребят, простите конечно, но у меня все равно не получаеться привязать спрайт так как надо, может кто подробнее объяснит?Заранее спасибо, извините, что надоедаю!
|
Ты Diplomat'a код разобрал?
Похоже, что нет. Если да, то проблем не должно быть, там есть все, что тебе нужно по части спрайта (на мой пример забей - это хрень полная). Интересен вот этот кусок: ;если задеваем стену, то рисуем искру ;CountCollisions(Robot) возвращает количество коллизий, ;которые произошли с объектом за время последнего UpdateWorld'a For coll=1 To CountCollisions(Robot) ;CollisionEntity(Robot,coll) - возвращает объект, с которым столкнулся ;Robot при коллизии "с номером" coll ;GetEntityType() - возвращает тип коллизии объекта If GetEntityType(CollisionEntity(Robot,coll))=boxType Then *;получаем координаты точки соприкосновения машины и стенки *px# = CollisionX(Robot,coll) *py# = CollisionY(Robot,coll) *pz# = CollisionZ(Robot,coll) *;устанавливаем спрайт в точку соприкосновения *PositionEntity spr1,px#,py#,pz# *;определяем нормали в точке соприкосновения *nx# = CollisionNX(Robot,coll) *ny# = CollisionNY(Robot,coll) *nz# = CollisionNZ(Robot,coll) *;"приклеиваем" спрайт на стенку *AlignToVector spr1,nx#,ny#,nz#,3 *;немного сдвигаем спрайт по иси Z, чтобы он не проваливался ;в стенку, а был на ее поверхности *MoveEntity Spr1,0,0,0.1 *;показываем спрайт, ведь не зря же мы его ;клеили на стену! *EntityAlpha spr1,1; << команды Hide/ShowEntity тормозные - НЕ используйте их в цикле! ;выходим из цикла после обнаружения первого соударения Exit Else *;прячем спрайт, потому что уже откоснулись от стенки *EntityAlpha spr1,0 EndIf Next Народ, я такими вещами, как CollisionEntity(Robot,coll) не занимался, поэтому мог что-то наврать тут (надеюсь не все). Код не мой, а Diplomat'a (если кто не понял). Мои только комментарии... Dizels, ты получил, что хотел? Если нет, то спрашивай КОНКРЕТНЕЕ... |
Ответ: Спрайт(столкновения)
Цитата:
|
Ответ: Спрайт(столкновения)
SBJoker, блин, так и знал... Дико извиняюсь, я был "слегка" нетрезв, вот и стал дебоширить...
|
Часовой пояс GMT +4, время: 06:21. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot