Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generating Downhill Terrain #2

Open
Denis-Memo opened this issue Aug 23, 2020 · 0 comments
Open

Generating Downhill Terrain #2

Denis-Memo opened this issue Aug 23, 2020 · 0 comments

Comments

@Denis-Memo
Copy link

Denis-Memo commented Aug 23, 2020

Hellow, Is there any way i can generate downhills slopes? I played with your code a lot and i was only able to create uphills terrain, it seems changing number_hills to 1 and dividing j by 2 in hill_point.y gives you an uphills terrain. I would like downhills slopes but am unable to generate

Here are the code:

Terrain.gd

extends Node

export var num_hills = 1
export var slice = 10
export var hill_range = 100

var screensize
var terrain = Array()
var texture = preload("res://grass.png")

func _ready():
	randomize()
	screensize = get_viewport().get_visible_rect().size
	terrain = Array()
	var start_y = screensize.y * 3/4 + (-hill_range + randi() % hill_range*2)
	terrain.append(Vector2(0, start_y))
	add_hills()
	
func _process(delta):
	if terrain[-1].x < $Runner.position.x + screensize.x / 2:
		add_hills()
	
func add_hills():
	var hill_width = screensize.x / num_hills
	var hill_slices = hill_width / slice
	var start = terrain[-1]
	var poly = PoolVector2Array()
	for i in range(num_hills):
		var height = randi() % hill_range
		start.y -= height
		for j in range(0, hill_slices):
			var hill_point = Vector2()
			hill_point.x = start.x + j * slice + hill_width * i
			hill_point.y = start.y + height * cos(2 * PI / hill_slices * j/2)
			#$Line2D.add_point(hill_point)
			terrain.append(hill_point)
			poly.append(hill_point)
		start.y += height
	var shape = CollisionPolygon2D.new()
	var ground = Polygon2D.new()
	$StaticBody2D.add_child(shape)
	poly.append(Vector2(terrain[-1].x, screensize.y))
	poly.append(Vector2(start.x, screensize.y))
	shape.polygon = poly
	ground.polygon = poly
	ground.texture = texture
	add_child(ground)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant