Add wip rover game
This commit is contained in:
1 parent
8974f0cc56
commit
c63377c1dc
15 files changed
+1423
-3
No files matched your search
@@ -0,0 +1,9 @@
|
||||
extends RigidBody
|
||||
|
||||
|
||||
func _ready():
|
||||
$hit_box.set_meta("owner", self)
|
||||
|
||||
func on_rover_interact(rover: Spatial) -> bool:
|
||||
apply_central_impulse(rover.heading * 250.0)
|
||||
return true
|
||||
@@ -0,0 +1,23 @@
|
||||
extends RigidBody
|
||||
|
||||
const SPEED = 300.0
|
||||
const TURN = 2.5
|
||||
var heading := Vector3.FORWARD
|
||||
|
||||
func _physics_process(delta):
|
||||
heading = heading.rotated(Vector3.UP, Input.get_axis("right", "left") * TURN * delta).normalized()
|
||||
$visual.global_transform = $visual.global_transform.looking_at($visual.global_transform.origin + heading, Vector3.UP)
|
||||
|
||||
func _integrate_forces(state):
|
||||
add_central_force(Input.get_axis("down", "up") * heading * SPEED)
|
||||
var c_mag = heading.cross(linear_velocity).y
|
||||
var c = Vector3.UP.cross(heading).normalized() * c_mag
|
||||
add_central_force(c * 1.0)
|
||||
|
||||
func _unhandled_input(event):
|
||||
if event.is_action_pressed("action"):
|
||||
for area in $"%interact_box".get_overlapping_areas():
|
||||
if area.has_meta("owner"):
|
||||
area = area.get_meta("owner")
|
||||
if area.on_rover_interact(self):
|
||||
break
|
||||
@@ -0,0 +1,8 @@
|
||||
extends Camera
|
||||
|
||||
|
||||
func _ready():
|
||||
pass
|
||||
|
||||
func _process(delta):
|
||||
global_transform.origin.z = $"../rover".global_transform.origin.z
|
||||
@@ -0,0 +1,21 @@
|
||||
extends Spatial
|
||||
|
||||
func _ready():
|
||||
spawn_rocks(10)
|
||||
|
||||
func spawn_rocks(count: int):
|
||||
var locations: Array = get_tree().get_nodes_in_group("rock_spawn_location")
|
||||
locations.shuffle()
|
||||
for i in range(min(count, locations.size())):
|
||||
var location = locations[i]
|
||||
var rock = preload("res://scenes/rock.tscn").instance()
|
||||
location.add_child(rock)
|
||||
|
||||
|
||||
func _on_collection_area_area_entered(area):
|
||||
if area.has_meta("owner"):
|
||||
area = area.get_meta("owner")
|
||||
area.queue_free()
|
||||
|
||||
func _process(delta):
|
||||
$"%progress_bar".value = $Timer.time_left * 100.0 / $Timer.wait_time
|
||||
Reference in new issue
Block a user