Prototype 2
This commit is contained in:
47
proto2/characters/character.gd
Normal file
47
proto2/characters/character.gd
Normal file
@@ -0,0 +1,47 @@
|
||||
extends KinematicBody
|
||||
var orientation: Transform
|
||||
var velocity: Vector3 = Vector3()
|
||||
var skel: Skeleton
|
||||
const GRAVITY = Vector3(0, -9.8, 0)
|
||||
# Declare member variables here. Examples:
|
||||
# var a = 2
|
||||
# var b = "text"
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
orientation = Transform()
|
||||
skel = get_children()[0]
|
||||
|
||||
func idle():
|
||||
var sm: AnimationNodeStateMachinePlayback = $AnimationTree["parameters/base/playback"]
|
||||
sm.travel("Idle")
|
||||
func walk():
|
||||
var sm: AnimationNodeStateMachinePlayback = $AnimationTree["parameters/base/playback"]
|
||||
sm.travel("Walk")
|
||||
func set_walk_speed(spd: float):
|
||||
$AnimationTree["parameters/base/Walk/speed/scale"] = spd
|
||||
func get_walk_speed() -> float:
|
||||
return $AnimationTree["parameters/base/Walk/speed/scale"]
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
#func _process(delta):
|
||||
# pass
|
||||
func _process(delta):
|
||||
orientation = global_transform
|
||||
orientation.origin = Vector3()
|
||||
var sm: AnimationNodeStateMachinePlayback = $AnimationTree["parameters/base/playback"]
|
||||
var rm = $AnimationTree.get_root_motion_transform()
|
||||
orientation *= rm
|
||||
var h_velocity = orientation.origin / delta
|
||||
velocity.x = h_velocity.x
|
||||
velocity.z = h_velocity.z
|
||||
if !is_on_floor():
|
||||
velocity += GRAVITY * delta
|
||||
velocity = move_and_slide(velocity, Vector3(0, 1, 0))
|
||||
if is_in_group("master"):
|
||||
orientation *= controls.frame_tf
|
||||
controls.frame_tf = Transform()
|
||||
orientation.origin = Vector3()
|
||||
orientation = orientation.orthonormalized()
|
||||
global_transform.basis = orientation.basis
|
||||
skel.rotation = Vector3()
|
||||
Reference in New Issue
Block a user