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 |