mirror of
				https://github.com/KevinMidboe/linguist.git
				synced 2025-10-29 17:50:22 +00:00 
			
		
		
		
	References: * https://github.com/okamstudio/godot/wiki/gdscript * http://www.godotengine.org/ Some projects using it: * https://github.com/okamstudio/godot * https://github.com/Qwertie-/Godot-games My motivation for adding it: To disambiguate these .gd files from GAP .gd files.
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			GDScript
		
	
	
	
	
	
| 
 | |
| 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)
 | |
| 
 |