3D Breakout question
Blitz3D Forums/Blitz3D Beginners Area/3D Breakout question| 
 | ||
| Hi guys :o) I would like to have the ball bouncing around the board (left,right,up,down etc) as I am trying to make a 3D breakout game, but I'm not quite sure how to do it. I have included my code below for you to test and maybe modify? Also could you tell me if I have done the mouse control/collision detection the right way please? Thanks guys, here's the code: Breakout 3D.zip | 
| 
 | ||
| Here is a code to move the Player and make the ball bouncing: 
Graphics3D 1024,768
SetBuffer BackBuffer()
Const BALL_COL = 1
Const BOARD_COL = 2
Global CAMERA = CreateCamera()
PositionEntity CAMERA,0,70,-60
RotateEntity CAMERA,45,0,0
Global OMNI = CreateLight()
AmbientLight 190,190,190
Global BOARD = LoadAnimMesh("models/game_board.3ds")
Global BASE = FindChild(BOARD,"base")
EntityType board,BOARD_COL,True
Global ball_x# = 0
Global ball_z# = 0
Global ball_x_speed = 1
Global ball_z_speed = 1
Global ball = CreateSphere()
EntityType ball,BALL_COL
EntityRadius ball,2
Global user_x# = 0
Global user_z# = -40
Global user = CreateCube()
ScaleEntity USER,5,3,1
	
	
EntityType USER,BALL_COL
EntityRadius user,7
MoveEntity ball,0,2,0
Collisions BALL_COL,BOARD_COL,2,2
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
While Not KeyHit(1)
Cls
	MXS#=MouseXSpeed()
	user_x = user_x+MXS/5
	MYS#=-MouseYSpeed()
	user_z = user_z+MYS/5
	
	PositionEntity USER,user_x,0,user_z
	
	If KeyDown(200) Then TurnEntity CAMERA,0.5,0,0
	If KeyDown(208) Then TurnEntity CAMERA,-0.5,0,0
	
	;AmbientLight 150,50,Rand(0,255)
	
	ball_x = ball_x+ball_x_speed
	ball_z= ball_z+ball_z_speed
	PositionEntity ball,ball_x,2,ball_z
	
	UpdateWorld
	If EntityCollided(ball,BOARD_COL)
		If EntityX(ball)>30 Or EntityX(ball)<-30
			ball_x_speed = -ball_x_speed
		EndIf
		If EntityZ(ball)>40 Or EntityZ(ball)<-40
			ball_z_speed = -ball_z_speed
		EndIf
	EndIf
	RenderWorld
	
	Text 0,0,EntityZ(ball)
	Flip
	
Wend
End
 | 
| 
 | ||
| Thank you so P.K, very much appriciated :o) Thanks again! | 
| 
 | ||
| I seem to be having another problem. I would like to draw the rows of bricks, but it isn't drawing properly, any idea why? :o) Thanks Here's my code: (By the way I have started the code from scratch again :o) 
Graphics3D 800,600
SetBuffer BackBuffer()
Global Cam_pivot = CreatePivot()
Global Camera = CreateCamera(Cam_pivot)
  MoveEntity Cam_pivot,0,100,-65
  RotateEntity Camera,45,0,0
Global Omni = CreateLight()
Global Area_x = 0
Global Area_z = 0
Global Area_width = 5
Global Area_height = 3
Global Brick_width = 10
Global Brick_height = 2
Global Brick_depth = 3
Global Brick = CreateCube()
FitMesh Brick,0,0,0,Brick_width,Brick_height,Brick_depth
;Global Board = LoadMesh("models/game_board.3ds")
Dim Bricks(Area_width-1,Area_height-1)
draw_level()
While Not KeyHit(1)
Cls
	
  If KeyDown(200) Then MoveEntity Cam_pivot,0,0,1
  If KeyDown(208) Then MoveEntity Cam_pivot,0,0,-1
	
  UpdateWorld
  RenderWorld
	
  Flip
	
Wend
End
Function draw_level()
  For z=0 To Area_height-1
    For x=0 To Area_width-1
      Bricks(x,z)=0
    Next
  Next
  Restore level1
  
  For z=0 To Area_height-1
    For x=0 To Area_width-1
      Read count
      If count=1 Then Bricks(x,z) = CopyEntity(Brick)
    Next
  Next
  For z=0 To Area_height-1
    For x=0 To Area_width-1
      PositionEntity Bricks(x,z),(Brick_width*Area_width),0,Area_z+(Brick_depth*Area_height)
    Next
  Next
End Function
.level1
Data 1,1,1,1,1
Data 1,1,1,1,1
Data 1,1,1,1,1
 | 
| 
 | ||
| Ahh, fixed it :o) I wasn't using the "x" co-ordinate in the positionentity code. Sorry about that :p Thanks again! | 
| 
 | ||
| Hello again :o) Here is my latest code in a zip file. I was wondering how could I go about getting bricks in there with collisions when the balls hits them? Also I can't quite figure out how to get the bat colliding properly with the board (So it doesn't move any further than the boundaries on the right). I would be so grateful if someone could take a look at my code and maybe show me what I need to do to fix these issues. Thank you :o) Code: Breakout3D Latest Code.zip |