diff options
author | Juan Linietsky <reduzio@gmail.com> | 2014-04-10 00:18:27 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2014-04-10 00:18:27 -0300 |
commit | 7ea3e8267afaf626256c84a9a3dc61e2954fc6a2 (patch) | |
tree | 0aa7588918b814d1781fc94e8b518c7095a0bab7 /demos/viewport/2d_in_3d/pong.gd | |
parent | b4969373b3475799d6b24cdffeda4659c37f0b8a (diff) | |
download | redot-engine-7ea3e8267afaf626256c84a9a3dc61e2954fc6a2.tar.gz |
-Fixed a few bugs in Viewport
-Made a few demos using Viewport to show it's true power!
-Fixed some start-up error messages.
Diffstat (limited to 'demos/viewport/2d_in_3d/pong.gd')
-rw-r--r-- | demos/viewport/2d_in_3d/pong.gd | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/demos/viewport/2d_in_3d/pong.gd b/demos/viewport/2d_in_3d/pong.gd new file mode 100644 index 0000000000..bfffdcf0d8 --- /dev/null +++ b/demos/viewport/2d_in_3d/pong.gd @@ -0,0 +1,73 @@ + +extends Node2D + +# member variables here, example: +# var a=2 +# var b="textvar" +const INITIAL_BALL_SPEED = 80 +var ball_speed = INITIAL_BALL_SPEED +var screen_size = Vector2(640,400) +#default ball direction +var direction = Vector2(-1,0) +var pad_size = Vector2(8,32) +const PAD_SPEED = 150 + + +func _process(delta): + + + # get ball positio and pad rectangles + var ball_pos = get_node("ball").get_pos() + var left_rect = Rect2( get_node("left").get_pos() - pad_size*0.5, pad_size ) + var right_rect = Rect2( get_node("right").get_pos() - pad_size*0.5, pad_size ) + + #integrate new ball postion + ball_pos+=direction*ball_speed*delta + + #flip when touching roof or floor + if ( (ball_pos.y<0 and direction.y <0) or (ball_pos.y>screen_size.y and direction.y>0)): + direction.y = -direction.y + + #flip, change direction and increase speed when touching pads + if ( (left_rect.has_point(ball_pos) and direction.x < 0) or (right_rect.has_point(ball_pos) and direction.x > 0)): + direction.x=-direction.x + ball_speed*=1.1 + direction.y=randf()*2.0-1 + direction = direction.normalized() + + #check gameover + if (ball_pos.x<0 or ball_pos.x>screen_size.x): + ball_pos=screen_size*0.5 + ball_speed=INITIAL_BALL_SPEED + direction=Vector2(-1,0) + + + get_node("ball").set_pos(ball_pos) + + #move left pad + var left_pos = get_node("left").get_pos() + + if (left_pos.y > 0 and Input.is_action_pressed("left_move_up")): + left_pos.y+=-PAD_SPEED*delta + if (left_pos.y < screen_size.y and Input.is_action_pressed("left_move_down")): + left_pos.y+=PAD_SPEED*delta + + get_node("left").set_pos(left_pos) + + #move right pad + var right_pos = get_node("right").get_pos() + + if (right_pos.y > 0 and Input.is_action_pressed("right_move_up")): + right_pos.y+=-PAD_SPEED*delta + if (right_pos.y < screen_size.y and Input.is_action_pressed("right_move_down")): + right_pos.y+=PAD_SPEED*delta + + get_node("right").set_pos(right_pos) + + + +func _ready(): + screen_size = get_viewport_rect().size # get actual size + pad_size = get_node("left").get_texture().get_size() + set_process(true) + |