Advertisement
Helium_ok

Untitled

Dec 5th, 2019
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.30 KB | None | 0 0
  1. extends Node2D
  2.  
  3. export var num_hills = 1
  4. export var slice = 10
  5. export var hill_range = 100
  6.  
  7. var screensize
  8. var terrain = Array()
  9. var texture = preload("res://Sprites/black.png")
  10.  
  11. func _ready():
  12.     randomize()
  13.     screensize = get_viewport().get_visible_rect().size
  14.     terrain = Array()
  15.     var start_y = screensize.y * 3/4 + (-hill_range + randi() % hill_range*2)
  16.     terrain.append(Vector2(0, start_y))
  17.     add_hills()
  18.  
  19. func _process(delta):
  20.     if terrain[-1].x < $player.position.x + screensize.x / 2:
  21.         add_hills()
  22.  
  23. func add_hills():
  24.     var hill_width = screensize.x / num_hills
  25.     var hill_slices = hill_width / slice
  26.     var start = terrain[-1]
  27.     var poly = PoolVector2Array()
  28.     for i in range(num_hills):
  29.         var height = randi() % hill_range
  30.         start.y -= height
  31.         for j in range(0, hill_slices):
  32.             var hill_point = Vector2()
  33.             hill_point.x = start.x + j * slice + hill_width * i
  34.             hill_point.y = start.y + height * cos(2 * PI / hill_slices * j)
  35.             terrain.append(hill_point)
  36.             poly.append(hill_point)
  37.         start.y += height
  38.     var shape = CollisionPolygon2D.new()
  39.     var ground = Polygon2D.new()
  40.     $StaticBody2D.add_child(shape)
  41.     poly.append(Vector2(terrain[-1].x, screensize.y))
  42.     poly.append(Vector2(start.x, screensize.y))
  43.     shape.polygon = poly
  44.     ground.polygon = poly
  45.     ground.texture = texture
  46.     add_child(ground)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement