Показать сообщение отдельно
Старый 27.06.2009, 20:07   #1
Kyard
AnyKey`щик
 
Регистрация: 27.06.2009
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Коллизия в анимации

У меня проблема которую я не могу решить . Все варианты которые мне предложили не смог реализовать((( Код полностью рабочий, но анимация проходит на сквозь.
Помогите кто чем может! (исправьте код)
Вот код:

Graphics3D 1440,900,32,2


Const robotcol = 1


l = CreateLight() ; свет
RotateEntity l, 0, 45, 45 ; поварачиваем свет

fir = CreatePivot() ; хз зачем это

ground = CreatePlane ( ) ; создаем землю

PositionEntity ground,0,-8,0 ; задаем кординаты земли

grass = LoadTexture ("D:\Проги\Bliz3D\1.jpg") ; загружаем текстуру земли

ScaleTexture grass,50,50 ; увеличиваем текстуру земли

EntityTexture ground, grass ; хз зачем это


dom = LoadAnimMesh ("D:\Проги\Blitz3D\дом.3ds") ; загружаем дом с анимацией

PositionEntity dom,0,-8.5 ,50 ; позиция дома

ScaleEntity dom,0.3,0.3,0.3 ; размеры дома

EntityType dom, 1 ; хз зачем это








robot = LoadAnimMesh ("D:\Проги\Blitz3D\анимация1.3ds") ; загружаем перса

cam = CreateCamera( robot) ; создаем и направляем камеру на перса

PositionEntity cam, -10, 70, 130 ; позиция камеры

LoadAnimSeq robot, "D:\Проги\Blitz3D\бег.3ds" ; перс шагает анимация

LoadAnimSeq robot, "D:\Проги\Blitz3D\прыжок.3ds" ; перс прыгает анимация

LoadAnimSeq robot, "D:\Проги\Blitz3D\присед.3ds" ; перс приседает анимация


ScaleEntity robot, 0.2, 0.2, 0.2 ; размеры перса

; переменные

rx# = 10

ry# = -8

rz# = 0

dy# = 0

ang = 90




PositionEntity robot, rx#, ry#, rz# ; позиция перса

RotateEntity robot, 0, ang + 90, 0 ; хз зачем это

EntityType robot, 2 ; хз зачем это

PointEntity cam, robot ; камеру на перса ; хз зачем это


Collisions 1, 2, 1,3 ; хз зачем это


Repeat ; хз зачем это


EntityCollided robot,2 ; хз зачем это

PositionEntity robot, rx#, ry#, rz# ; хз зачем это

RotateEntity robot, 0, ang + 90, 0 ; хз зачем это


; загружаем анимацию по приседанию

If KeyDown(46) Then

If AnimSeq (robot) = 0 Then Animate robot, 3, 0.5, 3, 10

ry# = ry# - 1

Else

If AnimSeq (robot) = 3 Then Animate robot, 1, 1, 0, 10



End If


; прыжок анимация не подключена но прыжок есть (просто смещение по Y)

If KeyDown (57) Then

If ry# = -8 Then dy# = 2

End If

ry# = ry# + dy#

dy# = dy# - 0.1

If ry# < -8 Then ry# = -8: dy# = 0


; анимация бега

If KeyDown (200)


If AnimSeq (robot) = 0 Then Animate robot, 1, 0.5, 1, 10

rx# = rx# + Cos (ang) *0.2

rz# = rz# + Sin (ang) * 0.2

Else


If AnimSeq (robot) = 1 Then Animate robot, 2, 1, 0, 10

End If


; поворачивает влево и право

If KeyDown(203) Then ang = ang + 0.7

If KeyDown (205) Then ang = ang - 0.7

; выход из программы

If KeyDown (1) Then Exit




UpdateWorld ; хз зачем это

RenderWorld ; хз зачем это

Flip ; хз зачем это

Forever ; хз зачем это



UpdateWorld ; хз зачем это
RenderWorld ; хз зачем это
Flip ; хз зачем это
WaitKey ; хз зачем это
(Offline)