Initial
This commit is contained in:
61
scripts/OverworldEntity.gd
Normal file
61
scripts/OverworldEntity.gd
Normal file
@@ -0,0 +1,61 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
enum Direction {
|
||||
NORTH,
|
||||
SOUTH,
|
||||
WEST,
|
||||
EAST
|
||||
}
|
||||
|
||||
var speed:float = 3200;
|
||||
var friction:float = 7;
|
||||
var gravity:float = 150;
|
||||
|
||||
var direction = Direction.SOUTH;
|
||||
var meshInstance:MeshInstance3D;
|
||||
|
||||
func getDirectionVector() -> Vector3:
|
||||
match direction:
|
||||
Direction.NORTH:
|
||||
return Vector3(0, 0, -1);
|
||||
Direction.SOUTH:
|
||||
return Vector3(0, 0, 1);
|
||||
Direction.WEST:
|
||||
return Vector3(-1, 0, 0);
|
||||
Direction.EAST:
|
||||
return Vector3(1, 0, 0);
|
||||
return Vector3(0, 0, 0);
|
||||
|
||||
# Virtual Methods
|
||||
func updateMovement(delta) -> void:
|
||||
pass
|
||||
|
||||
func updateOverworldLogic(delta) -> void:
|
||||
pass
|
||||
|
||||
# Events
|
||||
func _ready() -> void:
|
||||
meshInstance = get_node("MeshInstance3D")
|
||||
pass
|
||||
|
||||
func _process(delta:float) -> void:
|
||||
# Update logic
|
||||
updateOverworldLogic(delta)
|
||||
|
||||
# Set shader direction.
|
||||
var material:ShaderMaterial = meshInstance.get_surface_override_material(0)
|
||||
material.set_shader_parameter("direction", direction)
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
# Gravity and friction
|
||||
if !is_on_floor():
|
||||
velocity.y -= gravity * delta;
|
||||
else:
|
||||
velocity += -(velocity * friction * delta);
|
||||
|
||||
# Update movement
|
||||
updateMovement(delta)
|
||||
|
||||
# Update character controller.
|
||||
move_and_slide();
|
Reference in New Issue
Block a user