Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
извинити, но опять магнит
и снова здрасьте!
Я уже сегодня задавал вопрос про магнит.... вообщем вот что то нававял, но какая то фигня получилась, да еще и какие то глюки непонятные(шарики должны слипаться, а у меня некоторые на расстоянии друг от друга). Если нетрудно посмотрите, подскажите что не так, или как лучше сделать, плиз
вот код:
SeedRnd MilliSecs()
Graphics3D 1024, 768
SetBuffer BackBuffer()
;типы для столкновения
Const type_magnit=1, type_telo=2, type_pol=3
;массив притягивемых тел
Dim telos(10)
;камера
cam=CreateCamera()
PositionEntity cam, 0, 3, 0
TurnEntity cam, 30, 0, 0
;свет
lit=CreateLight()
;пол
pol=CreatePlane()
poltex=CreateTexture(32, 32)
SetBuffer TextureBuffer(poltex)
Color(0, 15, 255)
Rect(0, 0, 32, 32, 1)
Color(0, 0, 0)
Rect(0, 0, 32, 32, 0)
SetBuffer BackBuffer()
EntityTexture pol, poltex
PositionEntity pol, 0, -5, 0
EntityType pol, type_pol
;магнит
Global magnit=CreateSphere(32)
ScaleEntity magnit, .6, .6, .6
PositionEntity magnit, -1.5, 0, 5
EntityType magnit, type_magnit
;притягиваемые тела
For i=1 To 10
telos(i)=CreateSphere(32)
ScaleEntity telos(i), .5, .5, .5
PositionEntity telos(i), Rnd(-5,5), Rnd(-5,5), Rnd(-5,5)
EntityType telos(i), type_telo
EntityRadius telos(i), .5
Next
;проверка на столкновения
Collisions type_telo, type_magnit, 2, 1
Collisions type_telo, type_pol, 2, 2
Collisions type_telo, type_telo, 2, 2
Repeat
;фокусировка камеры на магните
PointEntity(cam, magnit)
;вращение камеры
If KeyDown(200) MoveEntity cam, 0, 0, .1
If KeyDown(20 MoveEntity cam, 0, 0, -.1
If KeyDown(203) MoveEntity cam, .1, 0, 0
If KeyDown(205) MoveEntity cam, -.1, 0, 0
;функция притяжения
gravity()
UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End
;------------------------------------gravity power--------------------------
Function gravity()
For i=1 To 10
If EntityDistance(magnit, telos(i))<15 Then
If EntityX(telos(i))>EntityX(magnit) MoveEntity telos(i), -0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i))), 0, 0
If EntityX(telos(i))<EntityX(magnit) MoveEntity telos(i), 0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i))), 0, 0
If EntityY(telos(i))>EntityY(magnit) MoveEntity telos(i), 0, -0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i))), 0
If EntityY(telos(i))<EntityY(magnit) MoveEntity telos(i), 0, 0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i))), 0
If EntityZ(telos(i))>EntityZ(magnit) MoveEntity telos(i), 0, 0, -0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i)))
If EntityZ(telos(i))<EntityZ(magnit) MoveEntity telos(i), 0, 0, 0.4/(EntityDistance(magnit, telos(i))*EntityDistance(magnit, telos(i)))
End If
Next
End Function
;----------------------------------end function-------------------------------
|