La scéne comporte 2 cubes
1 pour l'arme ( peut pas posté un mesh...)
l'autre le point de tir de l'arme ( le bout du canon quoi...)
1° bug :
- Change la vitesse du bullet a la ligne 103
de 0.01 passe la à >1
le bullet ne sera plus créer sur le point de tir ( 2° Cube )
2° bug : change le scale du 1° cube ( l'arme)
avec par exemple : 0.1,0.1,0.5
et amuse toi a tirer dans tout les sens pour constaté le bug.
Code : Tout sélectionner
IncludePath "includes" : IncludeFile "n3xtD_PB.pbi"
*app = iCreateGraphics3D(800,600)
iSetAntiAlias(#True)
;*app = iCreateGraphics3D(800,600, 32, #False, #True)
If *app= #Null
End
EndIf
iTextureCreation( #ETCF_CREATE_MIP_MAPS, #False )
*sky.IMesh = iCreateSkydome( iLoadTexture("medias/env_sky.jpg"), 64, 2, 1, 1.5, #Null )
iTextureCreation( #ETCF_CREATE_MIP_MAPS, #True )
*l = iCreateLight($FFFFFF,10000)
iPositionNode(*l, 100,100,100)
Define *cam.ICamera = iCreateCamera( )
iPositionNode(*cam, 0,0,0)
iNearValueCamera(*cam,0.01)
; ARME
;Global *obj.IObject = iLoad3DObject("medias/gun.b3d")
Global *gun.IMesh = iCreateCube(0.1,*cam);iCreateMesh(*obj,*cam)
;iScaleNode(*gun,0.3,0.3,0.5)
iTranslateNode(*gun,0.2,-0.2,0.35)
Global *shoot_point = iCreateCube(0.1,*gun)
iTranslateNode(*shoot_point,0.0,0.05,0.4)
Structure BULLETS
*Node.i
Direction.VECTOR3
Position.VECTOR3
EndStructure
Global NewList Bullet.BULLETS()
Repeat
; move camera with dir key and mouse (left click)
If iGetKeyDown(#KEY_ARROW_UP)
iMoveNode(*cam, 0,0,0.5)
EndIf
If iGetKeyDown(#KEY_ARROW_DOWN)
iMoveNode(*cam, 0,0,-0.5)
EndIf
If iGetMouseEvent(#MOUSE_BUTTON_LEFT)
If flagXDown=0
omx = iGetMouseX()
omy = iGetMouseY()
flagXDown=11
Else
moy = iGetMouseY()-omy
angley=(moy/10.0)
omy= iGetMouseY()
mox = iGetMouseX()-omx
anglex=(mox/10.0)
omx= iGetMouseX()
iTurnNode(*cam, angley, anglex,0)
EndIf
Else
flagXDown=0
EndIf
If iGetMouseEvent(#MOUSE_BUTTON_RIGHT) And shoot_timer < ElapsedMilliseconds()
shoot_timer = ElapsedMilliseconds()+250
AddElement(Bullet())
iNodePosition(*shoot_point, @Bullet()\Position\x)
iNodeRotation(*shoot_point, @Bullet()\Direction\x)
Bullet()\Node = iCreateCube(0.1)
iPositionNode( Bullet()\Node, Bullet()\Position\x,Bullet()\Position\y,Bullet()\Position\z)
iRotateNode(Bullet()\Node, Bullet()\Direction\x,Bullet()\Direction\y,Bullet()\Direction\z)
EndIf
ForEach Bullet()
iMoveNode(Bullet()\Node,0,0,0.01)
Next
; if Escape Key, exit
If iGetKeyDown(#KEY_ESCAPE)
Quit=1
EndIf
; ---------------
; Render
; ---------------
iBeginScene()
iDrawScene()
; iDrawText(*font, "SkyDome demo", 10,10,0,0, $ff00ffff)
iEndScene()
Until Quit=1
; end
iFreeEngine()