Тема: Камера...
Показать сообщение отдельно
Старый 17.06.2009, 14:58   #24
NitE
злобный флудер
 
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений
(для 1,476 пользователей)
Ответ: Камера...

ахх... начал чтото писать, да надоело сразу - вот гляди исходник моей старой игры
Include "ashadow.bb"
Include "fps.bb"

aGraphics3D 1280,1024,32,2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
HidePointer()
pxCreateWorld(1,"key")

Function LoadSkyBox(file$)
	m=CreateMesh()
	;front face
	b=LoadBrush( file$+"_lf.dds",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,-1,0,0:AddVertex s,+1,+1,-1,1,0
	AddVertex s,+1,-1,-1,1,1:AddVertex s,-1,-1,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3:
	FreeBrush b
	;right face
	b=LoadBrush( file$+"_fr.dds",49 )
	s=CreateSurface( m,b )
	AddVertex s,+1,+1,-1,0,0:AddVertex s,+1,+1,+1,1,0
	AddVertex s,+1,-1,+1,1,1:AddVertex s,+1,-1,-1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;back face
	b=LoadBrush( file$+"_bk.dds",49 )
	s=CreateSurface( m,b )
	AddVertex s,+1,+1,+1,0,0:AddVertex s,-1,+1,+1,1,0
	AddVertex s,-1,-1,+1,1,1:AddVertex s,+1,-1,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;left face
	b=LoadBrush( file$+"_rt.dds",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,+1,0,0:AddVertex s,-1,+1,-1,1,0
	AddVertex s,-1,-1,-1,1,1:AddVertex s,-1,-1,+1,0,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	;top face
	b=LoadBrush( file$+"_UP.dds",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,+1,+1,0,1:AddVertex s,+1,+1,+1,0,0
	AddVertex s,+1,+1,-1,1,0:AddVertex s,-1,+1,-1,1,1
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	ScaleMesh m,10000,10000,10000
	FlipMesh m
	EntityFX m,1+8
	Return m
End Function


Function FreeFlyCam(ent)
	mxspd#=MouseXSpeed()*Mousespeed 
	myspd#=MouseYSpeed()*Mousespeed 
	MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
	campitch#=EntityPitch(ent)+myspd# 
	If campitch#<-89 Then campitch#=-89
	If campitch#>89 Then campitch#=89
	RotateEntity ent,campitch#,EntityYaw(ent)-mxspd#,EntityRoll(ent)
End Function




Function PlayerCam(ent,m#,ent2)
	mxs#=MouseXSpeed()*m
	mys#=MouseYSpeed()*m/3

	mouse_shake=Abs(((mxs+mys)/2)/1000.0)

	dest_camera_yaw#=dest_camera_yaw#-mxs
	dest_camera_pitch#=dest_camera_pitch#+mys

	camera_yaw#=camera_yaw+((dest_camera_yaw-camera_yaw)/5)
	camera_pitch#=camera_pitch+((dest_camera_pitch-camera_pitch)/5)
	
	
	pxBodySetRotation ent,0,pxBodyGetRotationYaw(ent)+camera_yaw#,0
	MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
End Function

Function CreatePhysEntity(mass)
p.phys_body = New phys_body
p\entity =ACreateCube(0,2)
p\mass = mass
p\phys_entity = pxBodyCreateCube(1,1,1,p\mass)
pxBodySetPosition(p\phys_entity,0,20,0)
End Function

Type phys_body
Field entity
Field phys_entity
Field mass
End Type

Function PlayerMove(ent,speed)

If KeyDown(30) 
pxBodySetLocalLinearSpeed(ent,speed,pxBodyGetLocalLinearSpeedY(ent),0)
move_bool=0
ElseIf KeyDown(32) 
pxBodySetLocalLinearSpeed(ent,-speed,pxBodyGetLocalLinearSpeedY(ent),0)
move_bool=0
ElseIf KeyDown(31) 
pxBodySetLocalLinearSpeed(ent,0,pxBodyGetLocalLinearSpeedY(ent),speed)
move_bool=0
ElseIf KeyDown(17) 
pxBodySetLocalLinearSpeed(ent,0,pxBodyGetLocalLinearSpeedY(ent),-speed)
move_bool=0
Else
;pxBodySetLocalLinearSpeed(ent,0,-10,0)
move_bool=1
EndIf
End Function




aml=175
AmbientLight aml,aml,aml



light2=CreateSLight(2,100,155,155,155)
light=CreateSLight(1,100,155,155,155)



PositionEntity light,0,30,0

Global mousespeed#=0.5
camera=CreateCamera()
CameraRange(camera,.1,100000)

loadskybox("skybox\1")
speed#=1


player=LoadAnimMesh("actor_frank\frank.b3d")
jump=LoadAnimSeq(player,"actor_frank\jump.b3d")

player_phys=pxBodyCreateCapsule(5,5,1000)



player_speed=30



plane=ACreateCube()
ScaleEntity plane,1000,0.0001,1000

PointEntity light,plane

sand=LoadTexture("sand.jpeg")
EntityTexture plane,sand
ScaleTexture sand,.007,.007

MoveEntity camera,0,15,17
TurnEntity camera,13,180,0
EntityParent camera,player

gorka=ACreateCube()
ScaleEntity gorka,20,.1,20
MoveEntity gorka,40,5,10
TurnEntity gorka,20,0,0
phys1=pxBodyCreateCube(20,.1,20,0)
pxBodySetPosition phys1,40,5,10
pxBodySetRotation phys1,20,0,0


Global move_bool=0

max_player_speed=30

Animate player,1,1,jump,5

Repeat

If KeyHit(16) Animate player,1,1,1,5



pxBodySetLocalLinearSpeed(player_phys,0,-25,0)

pxBodySetFrozenRot(player_phys,1)



PositionEntity(player,pxBodyGetPositionX(player_phys),pxBodyGetPositionY(player_phys)-7.48,pxBodyGetPositionZ(player_phys))
RotateEntity(player,pxBodyGetRotationPitch(player_phys),pxBodyGetRotationYaw(player_phys),pxBodyGetRotationRoll(player_phys))

playermove(player_phys,player_speed)

If KeyDown(57) createphysentity(12)

For p.phys_body = Each phys_body
pxBodySetEntity(p\entity,p\phys_entity)
Next



playercam(player_phys,1.2,camera)

MoveMouse GraphicsWidth()/2,GraphicsHeight()/2



ARenderWorld(camera)
pxRenderPhysic(30,0) 

Text 10,10,pxkey
Flip
Until KeyHit(1)
End
ту конечно используется много всякой фигни, но переделать под блиц не проблема, и помне так всё намного проще чем у того-же Sleepybear
(Offline)
 
Ответить с цитированием