Показать сообщение отдельно
Старый 18.08.2006, 15:12   #7
Ilyich
Нуждающийся
 
Регистрация: 13.08.2006
Сообщений: 90
Написано 0 полезных сообщений
(для 0 пользователей)
Re: Вопрос по коллизиям.

Никак не могу понять, что сделал не так. По замыслу один шар должен отталкиваться (см. первый пост) однако если зайти шаром слева то он летит... вверх! в чем баг?
Graphics3D 640,480,32
SetBuffer BackBuffer()
camera= CreateCamera()
Const balls=1
Collisions balls,balls,2,3
Global wire=False
Global vel#
Global x#,Y#,z#
RotateEntity camera,90,30,0
PositionEntity Camera,10,10,0
plane=CreatePlane()
PositionEntity plane,0,0,0
ball1= CreateSphere()
PositionEntity ball1,10,1,0
EntityType ball1,balls
ball2=CopyEntity (ball1)
MoveEntity ball2,5,0,0

EntityColor ball2,0,255,0
EntityColor ball1,255,0,0
vel=.2
vel1#=.3
vel2#=.3
vel3#=.3
While Not KeyHit(1)
If vel<0.0000001 Then vel=0.0000001 
If x<0.0000001 Then x=0.0000001 
If y<0.0000001 Then y=0.0000001 
If z<0.0000001 Then z=0.0000001 

If KeyDown(30) Then vel=vel/1.05 TranslateEntity ball2,-(vel),0,0 Else vel=.3 
If KeyDown(32) Then vel1=vel1/1.05 TranslateEntity ball2,vel1,0,0 Else vel1=.3
If KeyDown(17) Then vel2=vel2/1.05 TranslateEntity ball2,0,0,vel2 Else vel2=.3
If KeyDown(31) Then vel3=vel3/1.05 TranslateEntity ball2,0,0,-vel3 Else vel3=.3
If EntityCollided(ball2,balls) Then 
x#=CollisionNX(ball2,1)
y#=CollisionNY(ball2,1)
z#=CollisionNZ(ball2,1)
Else x#=x/1.2:y#=y/1.2:z#=z/1.2
EndIf
TranslateEntity ball2,x#,y#,z#

If KeyHit(57) Then wire= Not wire :WireFrame  wire
UpdateWorld
RenderWorld
Color 0,0,0
Text 10,10,x
Flip

Wend
(Offline)
 
Ответить с цитированием