Показать сообщение отдельно
Старый 22.09.2005, 17:37   #9
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Не поможет.
Вот нормальный код, найдите пару десятков отличий. А заодно замерьте во сколько раз повісилась производительность...
Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

;ystanovka kolliziy
Const robotType = 1
Const levelType = 2
Const boxType = 3
Const cameraType = 4
Collisions robotType,levelType,2, 3
Collisions robotType,boxType,2, 2
Collisions cameraType,levelType,2, 3
Collisions cameraType,boxType,2, 2

;shrift pokrupnee
SetFont(LoadFont ("arial cyr",20))

;Sun
l = CreateLight(1)
RotateEntity l, 90, 0,0

;Level
level=CreatePlane ()
EntityColor level,0,0,200
PositionEntity level,0,-10,0
EntityType level,levelType

;Robo
robot = CreateCube ()
EntityColor robot,0,200,0
ScaleEntity robot,5,5,5
EntityRadius robot, 6
EntityType robot,robotType

;Camera
cam = CreateCamera(robot)
EntityRadius cam,5
EntityType cam,cameraType
CameraRange cam,0.01,2000;<<NEVER USE SUCH VALUES OR Z-Buffer WILL DIE! USE SOMETHING LIKE (0.1,1000)-MAXIMUM!
CameraFogColor cam, 0,128,255 
CameraFogRange cam, 1,1000
CameraClsColor cam,0,128,255;<<FOG COLOR WITHOUT BACKGROUND COLOR HAS NO REASON IN RESULT...

PositionEntity cam, 0, 5, 10

;bol'shoy kubik
cub1=CreateCube()
ScaleEntity cub1 ,1, 10, 100
PositionEntity cub1,25,5,-30
EntityType cub1,boxType
cub2=CopyEntity (cub1)
PositionEntity cub2,-25,5,-30
EntityType cub2,boxType

;iskry ot mashiny
spr1 = LoadSprite ("spr1.bmp")
SpriteViewMode spr1,2
RotateEntity spr1,0,180,90
ScaleSprite spr1,5,5
EntityFX spr1,17

FPSTimer=CreateTimer(60)

;------------------------------------------
;<<MAIN LOOP
While Not KeyHit(1)

;povorot kamery na robota
	PointEntity cam,robot
	
;dvigaem kamery
	If KeyDown(44) Then TranslateEntity cam,0,-0.5,0
	If KeyDown(45) Then TranslateEntity cam,0,0.5,0
	If KeyDown (46) Then MoveEntity cam,0,0,-1
	If KeyDown(47) Then MoveEntity cam,0,0,1
;dvigaem robota
	If KeyDown(208) Then MoveEntity robot,0,0,1
	If KeyDown (200) Then MoveEntity robot,0,0,-1
	If KeyDown (203) Then MoveEntity robot,1,0,0
	If KeyDown (205) Then MoveEntity robot,-1,0,0
;gravitaciya
	TranslateEntity robot,0,-1,0
	
;esli zadevaem steny, to risyem iskry
	For coll=1 To CountCollisions(Robot)
 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
 	MoveEntity Spr1,0,0,0.1
 	EntityAlpha spr1,1;<<Hide/ShowEntity cmds is slowly- don't use it in loop
 Exit
 Else
 	EntityAlpha spr1,1
 EndIf
	Next
	
	UpdateWorld
	RenderWorld
	Flip(0)
	WaitTimer(FPSTimer)
Wend
End
P.S. Кстати, что делает эта тема в разделе "2Д-программирование" ?
(Offline)
 
Ответить с цитированием