Initial commit

This commit is contained in:
2023-10-26 15:27:25 +02:00
commit 7ed5f3155e
25 changed files with 1565 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
extends Node3D
@export var target : Node3D
@onready var camera = $Camera3D
var lookInput : Vector2 = Vector2.ZERO
func _input(event):
if event is InputEventMouseMotion:
lookInput.x += event.relative.y
lookInput.y += event.relative.x
return
var zoom = .0
if event.is_action_released("zoom_in"):
zoom -= .2
if event.is_action_released("zoom_out"):
zoom += .2
camera.position.z = clamp(camera.position.z + zoom, 0, 4)
func _process(delta):
lookInput += Input.get_vector('look_left','look_right', 'look_down', 'look_up')
global_position = target.global_position
rotation.x = clamp(rotation.x - lookInput.x * delta * 0.3, PI*-0.48, PI*0.2)
rotation.y -= lookInput.y * delta * 0.3
lookInput = Vector2.ZERO

View File

@@ -0,0 +1,52 @@
extends CharacterBody3D
var input3D : Vector3
@export var SPEED = 1.4
@export var SPRINT_SPEED = 3.0
@export var JUMP_VELOCITY = 4.5
var speed = .0
@onready var camera : Camera3D = get_viewport().get_camera_3d()
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
func _ready():
process_priority = 2
func getCameraRelativeInput() -> Vector3 :
var cam_basis = camera.global_transform.basis
cam_basis.x.y = 0
cam_basis.x = cam_basis.x.normalized()
cam_basis.z.y = 0
cam_basis.z = cam_basis.z.normalized()
var input = Input.get_vector("move_left", "move_right", "move_up", "move_down")
var relativeInput = Vector3.ZERO
relativeInput += input.x * cam_basis.x
relativeInput += input.y * cam_basis.z
return relativeInput
func _physics_process(delta):
if not is_on_floor():
velocity.y -= gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = JUMP_VELOCITY
input3D = getCameraRelativeInput()
speed = SPEED + Input.get_action_strength("sprint") * SPRINT_SPEED
var direction = input3D.normalized()
if direction:
velocity.x = direction.x * speed
velocity.z = direction.z * speed
look_at(direction + global_position)
else:
velocity.x = move_toward(velocity.x, 0, speed)
velocity.z = move_toward(velocity.z, 0, speed)
move_and_slide()

View File

@@ -0,0 +1,28 @@
extends Node3D
@export var physicsObject : PhysicsBody3D
var physics_delta : float = 1
var target : Transform3D
var prev : Transform3D
func _ready():
target = physicsObject.global_transform
prev = physicsObject.global_transform
var d = 0
func _process(delta):
d += delta
var t = d / physics_delta
global_transform = prev.interpolate_with(target, t)
func _physics_process(delta):
physics_delta = delta
d = 0
global_transform = target
prev = target
target = physicsObject.global_transform

20
src/game_manager.gd Normal file
View File

@@ -0,0 +1,20 @@
extends Node
var pause_menu_res = preload('res://ui/pause_menu.tscn')
var pause_menu: PauseMenu
func _ready() -> void:
pause_menu = pause_menu_res.instantiate()
get_tree().root.add_child.call_deferred(pause_menu)
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed('ui_cancel'):
pause_game(not get_tree().paused)
func quit_game():
get_tree().quit()
func pause_game(pause = true):
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE if pause else Input.MOUSE_MODE_CAPTURED
get_tree().paused = pause
pause_menu.visible = pause

View File

@@ -0,0 +1,10 @@
shader_type canvas_item;
render_mode blend_disabled;
uniform float blur_amount : hint_range(0,5) = 5.0;
uniform vec4 tint : source_color = vec4(.5, .5, .5, 1.0);
uniform sampler2D screen_texture : hint_screen_texture, filter_linear_mipmap;
void fragment() {
COLOR = textureLod(screen_texture, SCREEN_UV, blur_amount) * tint;
}

12
src/spawner.gd Normal file
View File

@@ -0,0 +1,12 @@
class_name Spawner extends Node3D
@export var object_to_spawn: PackedScene
@export var auto_spawn: bool = true
func _ready() -> void:
if auto_spawn:
spawn.call_deferred()
func spawn() -> void:
var object = object_to_spawn.instantiate()
get_parent_node_3d().add_child(object)