Help With Children

Blitz3D Forums/Blitz3D Beginners Area/Help With Children

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

I'm trying to get my shooter to work, and I am having some problems. I need my weapons to shoot right, and when I parent my gun to my pivot, it is not storing the global cooords, it keeps them from when i first started. Even if I set the parent global to true/false.

I am using:
player model-for collisions
pivot- parented to player
camera-parented to pivot
gun-parented to camera

I'm using mouse x/y to determine the gun angle, however I need to know the barrel angle of the gun when it shoots, however it entityroll#, etc won't use the right variables. heres my gun code. And it needs to be edited....... I hacked the castle\demo for a quick level.


Graphics3D 800,600,16,2
Global MOVE#
Global turn#
Global rot#
Global fdelay
BULLX=CreateSphere()

;LOAD SKYBOX
	m=CreateMesh()
	;front face
	b=LoadBrush( file$+"_FR.jpg",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$+"_LF.jpg",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.jpg",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.jpg",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.jpg",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
	;bottom face	
	b=LoadBrush( file$+"_DN.jpg",49 )
	s=CreateSurface( m,b )
	AddVertex s,-1,-1,-1,1,0:AddVertex s,+1,-1,-1,1,1
	AddVertex s,+1,-1,+1,0,1:AddVertex s,-1,-1,+1,0,0
	AddTriangle s,0,1,2:AddTriangle s,0,2,3
	FreeBrush b
	ScaleMesh m,100,100,100
	FlipMesh m
	EntityFX m,1
	HideEntity M
;LOAD CASTLE!!!!!!!!!!!!!!!!!!
cast=LoadMesh( "c:\castle\castle1.x" )
	ScaleEntity cast,.4,.15,.2
	EntityType cast,TYPE_SCENERY

	player_model=LoadAnimMesh( "c:\castle\mariorun.x" )
	ScaleEntity player_model,.2,.2,.2
	TranslateEntity player_model,0,-1.25,0
	;HideEntity player_model
		spark_sprite=LoadSprite( "c:\castle\bigspark.bmp" )
	HideEntity spark_sprite

	bull_sprite=LoadSprite( "c:\castle\bluspark.bmp" )
	ScaleSprite bull_sprite,3,3
	EntityRadius bull_sprite,1.5
	EntityType bull_sprite,TYPE_BULLET
	HideEntity bull_sprite
	
	hole_sprite=LoadSprite( "c:\castle\bullet_hole.bmp",1 )
	EntityBlend hole_sprite,2
	SpriteViewMode hole_sprite,2
	HideEntity hole_sprite

;LOAD ENVIROMENT
light=CreateLight()
	;"terrain-1.jpg","water-2_mip.bmp","sky","heightmap_256.bmp"
	TurnEntity light,45,45,0
	LAND_TEX=LoadTexture ("C:\CASTLE\TERRAIN-1.JPG")
	ScaleTexture land_tex,10,10

	;land=LoadTerrain("C:\CASTLE\HEIGHTMAP_256.BMP")
	;EntityTexture land,land_tex
	
	;TerrainShading land,True
	;PositionEntity land,-1000,-100,-1000
	;ScaleEntity land,2000.0/256,100,2000.0/256
	;EntityType land,TYPE_TERRAIN
	;TerrainDetail land,750,True
		
	ground=CreatePlane()
	EntityTexture ground,land_tex
	PositionEntity ground,0,-100,0
	EntityOrder ground,9
	OFLOOR=CreatePlane()
	LAND_TEX2=LAND_TEX
	EntityTexture OFLOOR,LAND_TEX2
	EntityOrder OFLOOR,15
	PositionEntity OFLOOR,0,-31,0
	water_tex=LoadTexture("C:\CASTLE\WATER-2_MIP.BMP",3 )
	ScaleTexture water_tex,20,20
	
	water=CreatePlane()
	EntityTexture water,water_tex
	PositionEntity water,0,-30,0
		
	
;END LOAD ENVIROMENT
EntityRadius OFLOOR,1
EntityType OFLOOR,2
EntityRadius GROUND,1
EntityRadius PLAYER_MODEL,1.5
EntityType PLAYER_MODEL,1
;EntityType WATER,2
EntityType GROUND,2
EntityRadius CAST,.025
EntityType CAST,3
;EntityType LAND,2
;EntityType BULLET,4
Collisions 1,3,2,3
Collisions 1,2,2,2
Collisions 1,2,2,2

cam=CreateCamera()
PositionEntity CAM,0,16,-8
CameraRange CAM,.1,1000
PositionEntity PLAYER_MODEL,0,4,3


light=CreateLight()
RotateEntity light,90,0,0

MoveEntity cast,0,-2,0

gun=LoadMesh("c:\gun1.b3d")
;FitMesh gun,0,0,0,.02,.025,.1,1

PositionEntity gun,1,14,-5.4
ScaleEntity GUN,.5,1,1
pivot=CreatePivot()
EntityParent PIVOT,PLAYER_MODEL,True
EntityParent GUN,PIVOT,True
EntityParent cam,pivoT,True
MoveMouse 400,300

While Not KeyHit(1)
FDELAY=FDELAY-1
GUN_ROT#=0
GUN_PITCH#=0
PositionEntity PIVOT,1,14,-5.4

STRIFE#=0
msg$=""
move#=0
turn#=0
shoot=0
If KeyHit(17)=True Or KeyDown(17)=True MOVE#=1
If KeyHit(31)=True Or KeyDown(31)=True MOVE#=-1
If KeyHit(30)=True Or KeyDown(30)=True TURN#=1
If KeyHit(32)=True Or KeyDown(32)=True TURN#=-1
If KeyHit(51)=True Or KeyDown(51)=True STRIFE#=-2
If KeyHit(52)=True Or KeyDown(52)=True STRIFE#=2
curr_my=MouseY()
curr_mx=MouseX()
If MouseHit(1)=True Or MouseDown(1)=True SHOOT=1
If MouseHit(2)=True Or MouseDown(2)=True SHOOT=2
gun_rot#=0
gun_pitch#=0



Select True
;rem next line exclude
Case curr_mx<150
	gun_rot#=90
Case curr_mx<200
	gun_rot#=75
Case curr_mx<250
	gun_rot#=60
Case curr_mx<300
	gun_rot#=45
Case curr_mx<350
	gun_rot#=30
Case curr_mx>650
	gun_rot#=-90
Case curr_mx>600
	gun_rot#=-75
Case curr_mx>550
	gun_rot#=-60
Case curr_mx>500
	gun_rot#=-45
Case curr_mx>450
	gun_rot#=-30
End Select
;SET GUN_PITCH
Select True
Case curr_my<100
	gun_pitch#=-50
Case curr_my<125
	gun_pitch#=-40
Case curr_my<150
	gun_pitch#=-30
Case curr_my<175
	gun_pitch#=-20
Case curr_my<225
	gun_pitch#=-10
Case curr_my>600
	gun_pitch#=50
Case curr_my>500
	gun_pitch#=40
Case curr_my>450
	gun_pitch#=30
Case curr_my>400
	gun_pitch#=20
Case curr_my>350
	gun_pitch#=10
End Select

If shoot=1 And FDELAY<1
;msg$="FIRE FIRE FIRE FIRE FIRE FIRE"
P.bullet=New bullet
P\mesh=CopyEntity(bullx)
PositionEntity P\mesh,(EntityX#(PLAYER_MODEL)),( EntityY#(PLAYER_MODEL)),(EntityZ#(PLAYER_MODEL))
TurnEntity P\mesh,GUN_PITCH#,ROT#+GUN_ROT#,0
MoveEntity P\mesh,1.9,16,-3.5
fdelay=20
EndIf


ROT#=ROT#+TURN#

MoveEntity PLAYER_MODEL,STRIFE#,-.25,MOVE#
TurnEntity PLAYER_MODEL,0,TURN#,0
RotateEntity PIVOT,GUN_PITCH#,GUN_ROT#,0

For P.BULLET=Each BULLET
MoveEntity P\MESH,0,0,4
Next

UpdateWorld
RenderWorld
roll#=EntityRoll#(GUN)
pitch#=EntityPitch#(GUN)
yaw#=EntityYaw#(GUN)
x#=EntityX#(GUN)
y#=EntityY#(GUN)
z#=EntityZ#(GUN)
Text 10,10,"ROLL: "+ROLL#
Text 10,30,"PITCH: "+PITCH#
Text 10,50,"YAW: "+YAW#
Text 10,70,"X#= "+X#
Text 10,90,"Y#= "+Y#
Text 10,110,"Z#= "+Z#
Text 10,150,"TRISRENDERED="+TrisRendered()
			
Flip
Wend
End

Type BULLET
Field MESH
Field DURATION
End Type