1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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)
|