Показать сообщение отдельно
Старый 30.09.2005, 19:30   #22
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ты 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, ты получил, что хотел? Если нет, то спрашивай КОНКРЕТНЕЕ...
(Offline)
 
Ответить с цитированием