Показать сообщение отдельно
Старый 08.02.2009, 14:58   #7
Dzirt
Элита
 
Аватар для Dzirt
 
Регистрация: 16.01.2008
Сообщений: 1,800
Написано 958 полезных сообщений
(для 3,833 пользователей)
Ответ: задачка с ентитями

Легко.Если прально понял тогда вот :

Graphics3D 800,600,32,2
SetBuffer BackBuffer()
Global main,cam,not_main,sph

c=CreateCube()
ScaleEntity c,40,1,40
PositionEntity c,0,-1,0

main=CreateCube()
EntityColor main,0,0,0
ScaleEntity main,2,2,2
PositionEntity main,10,2,0

not_main=CopyEntity(main)
PositionEntity not_main,23,2,0
EntityColor not_main,215,0,0

not_main_c=CreateCylinder(20,1,not_main)
ScaleEntity not_main_c,0.1,10,0.1
EntityColor not_main_c,34,124,153
RotateEntity not_main_c,90,0,0
PositionEntity not_main_c,0,0,10 


cam=CreateCamera()
PositionEntity cam,0,45,-20
CameraClsColor cam,20,120,220

sph=CreateSphere()
ScaleEntity sph,8,8,8
PositionEntity sph,0,1,0
EntityColor sph,23,232,23
EntityAlpha sph,0.4

PointEntity not_main,main
PointEntity cam,sph

While Not KeyHit(1)

rest()
keycontroll()

UpdateWorld
RenderWorld
Flip 
Wend
End




Function keycontroll()

If KeyDown(200) MoveEntity  main,-0.5,0,0
If KeyDown(203) TurnEntity main,0,1,0
If KeyDown(205) TurnEntity main,0,-1,0
If KeyDown(208) MoveEntity main,0.5,0,0

End Function

Function rest()


PointEntity not_main,main

If EntityDistance(main,not_main)>20 MoveEntity not_main,0,0,1
If EntityDistance(not_main,sph)<10 MoveEntity not_main,0,0,-1

End Function
Плюс реализацию легко можно модернизировать,чтобы небыло разны нюансов...но вроде все и так уже роботает как на рисунках.И если уж точно:

есть главный ентити - чёрный. перед ним всегда висит красный ентити.
1. Зади него.Если смотреть рисунки.
2. Второй рисунок...ты там или с цветами стрелок напутал,или сам себе противоречиш.

Последний раз редактировалось Dzirt, 08.02.2009 в 15:31.
(Offline)
 
Ответить с цитированием