Ты 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, ты получил, что хотел? Если нет, то спрашивай КОНКРЕТНЕЕ...
|