Показать сообщение отдельно
Старый 30.08.2007, 17:30   #40
avel
Бывалый
 
Аватар для avel
 
Регистрация: 12.10.2006
Сообщений: 737
Написано 131 полезных сообщений
(для 452 пользователей)
Re: Новичёк не понимает... Помогите.

сначала хотел исправить твой код, но потом посмотрел, сколько там типичных "новичковских" ошибок и решил написать свой. вот, тут все работает и прокомментировано, разбирайся:
Graphics3D 1024,768,32,1
;загружаем шрифт:
font=LoadFont(courier ,16)
SetFont font 
;скорости объектов:
Global speed1#
Global speed2#
;типы для столкновений:
Const Tpln=1, Tc1=2, Tc2=3
;создаем модели для столкновений:
c1=CreateCube()
EntityType c1,Tc1
PositionEntity c1,3,3,3
c2=CreateCube()
PositionEntity c2,-3,3,3
EntityType c2,Tc2
;скалируем их в соответствии с 3Dмоделями:
ScaleEntity c1,1,1,2; тут ты поставиш свои значения
ScaleEntity c2,1,1,2; тут тоже
;делаем их невидимыми: (пока убрал, чтобы было за чем наблюдать)
;EntityAlpha c1,0
;EntityAlpha c2,0
;загружаем меши: (потом сам допишешь)
;m1=LoadMesh("")
;ScaleMesh m1,,,
;m2=LoadMesh("")
;ScaleMesh m2,,,
;создаем камеры:
cam1=CreateCamera()
PositionEntity cam1,3,5,-10
CameraClsColor cam1,100,100,200
CameraViewport cam1,0,0,GraphicsWidth(),GraphicsHeight()*0.5 
cam1targ=CreatePivot(c1)
PositionEntity cam1targ,0,5,-10
cam2=CreateCamera()
PositionEntity cam2,-3,5,-10
CameraClsColor cam2,100,100,200
CameraViewport cam2,0,GraphicsHeight()*0.5,GraphicsWidth(),GraphicsHeight()*0.5 
cam2targ=CreatePivot(c2)
PositionEntity cam2targ,0,5,-10
;создаем план:
pln=CreatePlane()
EntityType pln,Tpln
;создаем текстуру для плана (у тебя этого куска кода не будет, т. к. ты ее грузишь из файла)
plntex=CreateTexture(256,256)
SetBuffer TextureBuffer(plntex)
Color 150,150,50
Rect 0,0,256,256
Color 50,150,50
Rect 32,32,192,192
;текстурим план:
ScaleTexture plntex,3,3
EntityTexture pln,plntex
;присваиваем нужный буффер и цвет:
SetBuffer BackBuffer()
Color 200,50,50
;прописываем коллизии:
Collisions Tc1,Tc2,2,3
Collisions Tc2,Tc1,2,3
Collisions Tc1,Tpln,2,3
Collisions Tc2,Tpln,2,3
;пошел главный цикл:
Repeat 
;двигаем первый объект
If KeyDown(17) Then 
	If speed1#<= 0.5 Then 
		speed1#=speed1#+0.01
	EndIf 
EndIf
If KeyDown(31) Then 
	If speed1#>= -0.2 Then 
		speed1#=speed1#-0.01
	EndIf 
EndIf 
speed1#=speed1#*0.99
If KeyDown(30) Then TurnEntity c1,0,1,0
If KeyDown(32) Then TurnEntity c1,0,-1,0
MoveEntity c1,0,0,speed1#
TranslateEntity c1,0,-1,0
;двигаем второй объект
If KeyDown(200) Then 
	If speed2#<= 0.5 Then 
		speed2#=speed2#+0.01
	EndIf 
EndIf
If KeyDown(208) Then 
	If speed2#>= -0.2 Then 
		speed2#=speed2#-0.01
	EndIf 
EndIf 
speed2#=speed2#*0.99
If KeyDown(203) Then TurnEntity c2,0,1,0
If KeyDown(205) Then TurnEntity c2,0,-1,0
MoveEntity c2,0,0,speed2#
TranslateEntity c2,0,-1,0
;двигаем 3Dмодели (пока отключил т. к. их нет)
;PositionEntity m1,EntityX(c1,1),EntityY(c1,1),EntityZ(c1,1)
;RotateEntity m1,EntityPitch(c1,1),EntityYaw(c1,1),EntityRoll(c1,1)
;PositionEntity m2,EntityX(c2,1),EntityY(c2,1),EntityZ(c2,1)
;RotateEntity m2,EntityPitch(c2,1),EntityYaw(c2,1),EntityRoll(c2,1)
;двигаем камеры:
dx1#=EntityX( cam1targ,True )-EntityX( cam1 )
dy1#=EntityY( cam1targ,True )-EntityY( cam1 )
dz1#=EntityZ( cam1targ,True )-EntityZ( cam1 )
TranslateEntity cam1,dx1*.1,dy1*.1,dz1*.1
PointEntity cam1,c1
dx2#=EntityX( cam2targ,True )-EntityX( cam2 )
dy2#=EntityY( cam2targ,True )-EntityY( cam2 )
dz2#=EntityZ( cam2targ,True )-EntityZ( cam2 )
TranslateEntity cam2,dx2*.1,dy2*.1,dz2*.1
PointEntity cam2,c2
;обновляем сцену:
UpdateWorld()
RenderWorld()
;пишем скорость:
Text GraphicsWidth()-100,30,"speed: "+Int(speed1#*20)+"km/ч"
Text GraphicsWidth()-100,GraphicsHeight()*0.5+30,"speed: "+Int(speed2#*20)+"km/ч"
Flip
Until KeyHit(1)
End
(Offline)
 
Ответить с цитированием