Added basic animations for player.
parent
4ea895ed30
commit
f280271de5
File diff suppressed because it is too large
Load Diff
|
@ -1,62 +1,80 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://dy8vjf760prhq"]
|
[gd_scene load_steps=15 format=3 uid="uid://dy8vjf760prhq"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://c0ot1kp5fekqy" path="res://assets/3rdparty/KayKit_Adventurers_1.0_EXTRA/Characters/gltf/Rogue.glb" id="1_ps6bc"]
|
[ext_resource type="PackedScene" uid="uid://c0ot1kp5fekqy" path="res://assets/3rdparty/KayKit_Adventurers_1.0_EXTRA/Characters/gltf/Rogue.glb" id="1_rsxsi"]
|
||||||
|
[ext_resource type="AnimationLibrary" uid="uid://dbaynxuqbkor6" path="res://assets/characters/rogue_animation_library.tres" id="2_18sv4"]
|
||||||
|
|
||||||
[node name="Rogue" instance=ExtResource("1_ps6bc")]
|
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_fe868"]
|
||||||
|
animation = &"rogue/1H_Melee_Attack_Chop"
|
||||||
|
|
||||||
[node name="Skeleton3D" parent="Rig" index="0"]
|
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_dqt6d"]
|
||||||
bones/1/position = Vector3(0, 0.392064, 0)
|
animation = &"rogue/Idle"
|
||||||
bones/1/rotation = Quaternion(-1.11123e-10, 0.0431578, 2.57241e-09, 0.999068)
|
|
||||||
bones/4/rotation = Quaternion(-0.559906, -0.0608803, -0.643974, 0.517779)
|
|
||||||
bones/5/rotation = Quaternion(3.65498e-08, -4.88301e-08, -0.494719, 0.869053)
|
|
||||||
bones/7/rotation = Quaternion(-0.321065, -0.325319, 0.145726, 0.87741)
|
|
||||||
bones/8/rotation = Quaternion(-3.6586e-09, 6.87811e-09, -0.707107, 0.707107)
|
|
||||||
bones/10/rotation = Quaternion(-0.618244, 0.0807287, 0.618012, 0.478873)
|
|
||||||
bones/11/rotation = Quaternion(2.09853e-08, 5.12855e-08, 0.517939, 0.855417)
|
|
||||||
bones/13/rotation = Quaternion(-0.319291, 0.300524, -0.22735, 0.869512)
|
|
||||||
bones/14/rotation = Quaternion(-1.02444e-09, -4.24391e-09, 0.707107, 0.707107)
|
|
||||||
bones/19/rotation = Quaternion(-5.8061e-11, -0.0313416, -1.88013e-09, 0.999509)
|
|
||||||
bones/21/rotation = Quaternion(0.993715, 0.0837146, 0.0735038, 0.0109185)
|
|
||||||
bones/22/rotation = Quaternion(0.195602, 6.26228e-08, -1.32239e-07, 0.980683)
|
|
||||||
bones/23/rotation = Quaternion(-0.517564, -0.209497, 0.0436549, 0.828452)
|
|
||||||
bones/25/rotation = Quaternion(0.997322, -0.0294574, 0.0315293, 0.0590483)
|
|
||||||
bones/26/rotation = Quaternion(0.274008, -6.38135e-08, 1.92761e-07, 0.961727)
|
|
||||||
bones/27/rotation = Quaternion(-0.559039, 0.114513, -0.00862763, 0.82115)
|
|
||||||
bones/28/rotation = Quaternion(3.04797e-08, 0.920355, -0.391084, -6.94849e-08)
|
|
||||||
bones/29/rotation = Quaternion(0.707107, -2.29302e-07, -4.60551e-08, 0.707107)
|
|
||||||
bones/30/position = Vector3(0.202182, 0.0259903, 0.205181)
|
|
||||||
bones/30/rotation = Quaternion(-0.707107, -7.05285e-08, -7.05285e-08, 0.707107)
|
|
||||||
bones/31/rotation = Quaternion(9.65792e-09, 1.77955e-09, 0.985719, -0.168398)
|
|
||||||
bones/32/rotation = Quaternion(-1.04035e-07, 0.391084, 0.920355, -2.9526e-08)
|
|
||||||
bones/34/rotation = Quaternion(1, -3.10863e-15, 1.94707e-07, -6.91739e-22)
|
|
||||||
bones/36/rotation = Quaternion(0.707107, -3.82385e-08, 1.45009e-07, 0.707107)
|
|
||||||
bones/37/rotation = Quaternion(-0.707107, -7.05285e-08, -7.05285e-08, 0.707107)
|
|
||||||
bones/38/rotation = Quaternion(-5.83589e-09, 6.43837e-10, 0.994809, 0.101756)
|
|
||||||
bones/39/rotation = Quaternion(-1.04035e-07, 0.391084, 0.920355, -2.95261e-08)
|
|
||||||
bones/44/position = Vector3(0.520841, 0.788312, -0.0576373)
|
|
||||||
bones/44/rotation = Quaternion(0.794627, -1.11759e-07, 0.607098, -5.96046e-08)
|
|
||||||
bones/46/position = Vector3(-0.510844, 0.788312, 0.0597369)
|
|
||||||
bones/46/rotation = Quaternion(-0.758253, -1.52737e-07, 0.651961, -1.11759e-08)
|
|
||||||
|
|
||||||
[node name="Knife_Offhand" parent="Rig/Skeleton3D" index="0"]
|
[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_g5g2g"]
|
||||||
transform = Transform3D(9.17323e-08, 0.262865, 0.964832, 0.999999, -5.48367e-07, 4.74853e-07, 8.68286e-07, 0.964832, -0.262865, 0.507764, 0.636705, -0.0185365)
|
animation = &"rogue/Running_A"
|
||||||
visible = false
|
|
||||||
|
|
||||||
[node name="1H_Crossbow" parent="Rig/Skeleton3D" index="1"]
|
[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_7v7om"]
|
||||||
transform = Transform3D(0.988701, -0.149894, -4.17134e-07, -8.6882e-07, -1.08398e-06, -0.999999, 0.149894, 0.988702, -1.49706e-06, -0.489506, 0.745658, 0.096339)
|
|
||||||
visible = false
|
|
||||||
|
|
||||||
[node name="2H_Crossbow" parent="Rig/Skeleton3D" index="2"]
|
[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_uc6vu"]
|
||||||
transform = Transform3D(0.988701, -0.149894, -4.17134e-07, -8.6882e-07, -1.08398e-06, -0.999999, 0.149894, 0.988702, -1.49706e-06, -0.489506, 0.745658, 0.096339)
|
nodes/Animation/node = SubResource("AnimationNodeAnimation_g5g2g")
|
||||||
visible = false
|
nodes/Animation/position = Vector2(40, 180)
|
||||||
|
nodes/TimeScale/node = SubResource("AnimationNodeTimeScale_7v7om")
|
||||||
|
nodes/TimeScale/position = Vector2(340, 180)
|
||||||
|
nodes/output/position = Vector2(640, 160)
|
||||||
|
node_connections = [&"TimeScale", 0, &"Animation", &"output", 0, &"TimeScale"]
|
||||||
|
|
||||||
[node name="Knife" parent="Rig/Skeleton3D" index="3"]
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_ryaua"]
|
||||||
transform = Transform3D(4.21314e-07, -0.149893, 0.988701, 0.999999, -9.35798e-07, -8.50581e-07, 1.34781e-06, 0.988702, 0.149894, -0.491058, 0.64103, 0.10658)
|
advance_mode = 2
|
||||||
visible = false
|
|
||||||
|
|
||||||
[node name="Throwable" parent="Rig/Skeleton3D" index="4"]
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_1dwt2"]
|
||||||
transform = Transform3D(4.37053e-07, -0.149894, 0.988701, 0.999999, -9.21064e-07, -8.64267e-07, 1.3353e-06, 0.988702, 0.149894, -0.518076, 0.64103, 0.28479)
|
advance_mode = 2
|
||||||
visible = false
|
advance_condition = &"attack"
|
||||||
|
|
||||||
[node name="Rogue_Cape" parent="Rig/Skeleton3D" index="5"]
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_w1i70"]
|
||||||
transform = Transform3D(0.996275, -5.14962e-09, 0.0862354, 5.13044e-09, 1, 4.44078e-10, -0.0862354, 1.47756e-15, 0.996275, -4.17227e-09, 1.20227, 1.19714e-15)
|
switch_mode = 2
|
||||||
|
advance_mode = 2
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_chmuj"]
|
||||||
|
xfade_time = 0.1
|
||||||
|
advance_mode = 2
|
||||||
|
advance_condition = &"running"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_oa1w1"]
|
||||||
|
xfade_time = 0.1
|
||||||
|
advance_mode = 2
|
||||||
|
advance_condition = &"idle"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_2nd5h"]
|
||||||
|
xfade_time = 0.2
|
||||||
|
advance_mode = 2
|
||||||
|
advance_condition = &"running"
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_h0y4b"]
|
||||||
|
states/End/position = Vector2(902, 102)
|
||||||
|
states/Start/position = Vector2(189, 123)
|
||||||
|
states/rogue_1H_Melee_Attack_Chop/node = SubResource("AnimationNodeAnimation_fe868")
|
||||||
|
states/rogue_1H_Melee_Attack_Chop/position = Vector2(677, 123)
|
||||||
|
states/rogue_Idle/node = SubResource("AnimationNodeAnimation_dqt6d")
|
||||||
|
states/rogue_Idle/position = Vector2(422, 123)
|
||||||
|
states/running/node = SubResource("AnimationNodeBlendTree_uc6vu")
|
||||||
|
states/running/position = Vector2(422, 285)
|
||||||
|
transitions = ["Start", "rogue_Idle", SubResource("AnimationNodeStateMachineTransition_ryaua"), "rogue_Idle", "rogue_1H_Melee_Attack_Chop", SubResource("AnimationNodeStateMachineTransition_1dwt2"), "rogue_1H_Melee_Attack_Chop", "rogue_Idle", SubResource("AnimationNodeStateMachineTransition_w1i70"), "rogue_Idle", "running", SubResource("AnimationNodeStateMachineTransition_chmuj"), "running", "rogue_Idle", SubResource("AnimationNodeStateMachineTransition_oa1w1"), "rogue_1H_Melee_Attack_Chop", "running", SubResource("AnimationNodeStateMachineTransition_2nd5h")]
|
||||||
|
graph_offset = Vector2(-12, -72)
|
||||||
|
|
||||||
|
[node name="Rogue" type="Node3D"]
|
||||||
|
|
||||||
|
[node name="Rogue" parent="." instance=ExtResource("1_rsxsi")]
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||||
|
root_node = NodePath("../Rogue")
|
||||||
|
libraries = {
|
||||||
|
"rogue": ExtResource("2_18sv4")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="AnimationTree" type="AnimationTree" parent="."]
|
||||||
|
root_node = NodePath("../Rogue")
|
||||||
|
tree_root = SubResource("AnimationNodeStateMachine_h0y4b")
|
||||||
|
anim_player = NodePath("../AnimationPlayer")
|
||||||
|
parameters/conditions/attack = false
|
||||||
|
parameters/conditions/idle = false
|
||||||
|
parameters/conditions/running = false
|
||||||
|
parameters/running/TimeScale/scale = 1.5
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,20 +1,29 @@
|
||||||
class_name Player
|
class_name Player
|
||||||
extends CharacterBody3D
|
extends CharacterBody3D
|
||||||
|
|
||||||
const SPEED = 5.0
|
const SPEED = 4.0
|
||||||
const JUMP_VELOCITY = 2.5
|
const JUMP_VELOCITY = 2.5
|
||||||
|
|
||||||
@onready var geometry = %Geometry
|
@onready var geometry:Node3D = %Geometry
|
||||||
@onready var actionable_detector = %ActionableDetector
|
@onready var actionable_detector = %ActionableDetector
|
||||||
|
@onready var animation_tree:AnimationTree = $Geometry/Rogue/AnimationTree
|
||||||
|
|
||||||
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
||||||
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
|
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
|
||||||
var inventory:Inventory = Inventory.new()
|
var inventory:Inventory = Inventory.new()
|
||||||
|
|
||||||
var last_nonzero_velocity:Vector3 = Vector3.BACK
|
var look_direction:Vector3 = Vector3.BACK
|
||||||
|
|
||||||
signal trigger_message(message:String)
|
signal trigger_message(message:String)
|
||||||
|
|
||||||
|
var interaction_state:bool = false
|
||||||
|
|
||||||
|
func _process(_delta):
|
||||||
|
animation_tree.set("parameters/conditions/attack", interaction_state)
|
||||||
|
|
||||||
|
if interaction_state:
|
||||||
|
interaction_state = false
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
# Add the gravity.
|
# Add the gravity.
|
||||||
if not is_on_floor():
|
if not is_on_floor():
|
||||||
|
@ -35,10 +44,16 @@ func _physics_process(delta):
|
||||||
|
|
||||||
var ground_velocity:Vector2 = Vector2(velocity.x, velocity.z)
|
var ground_velocity:Vector2 = Vector2(velocity.x, velocity.z)
|
||||||
|
|
||||||
if ground_velocity.length_squared() > 0.1 * 0.1:
|
var is_moving:bool = ground_velocity.length_squared() > 0.1 * 0.1
|
||||||
last_nonzero_velocity = Vector3(ground_velocity.x, 0, ground_velocity.y).normalized()
|
|
||||||
|
|
||||||
geometry.look_at(position - last_nonzero_velocity, Vector3.UP)
|
if is_moving:
|
||||||
|
look_direction = Vector3(ground_velocity.x, 0, ground_velocity.y).normalized()
|
||||||
|
elif direction.length_squared() > 0.1 * 0.1:
|
||||||
|
look_direction = direction
|
||||||
|
|
||||||
|
animation_tree.set("parameters/conditions/running", is_moving)
|
||||||
|
animation_tree.set("parameters/conditions/idle", not is_moving)
|
||||||
|
geometry.look_at(position - look_direction, Vector3.UP)
|
||||||
|
|
||||||
|
|
||||||
func on_item_picked_up(item:Item):
|
func on_item_picked_up(item:Item):
|
||||||
|
@ -50,4 +65,17 @@ func _unhandled_input(_event: InputEvent) -> void:
|
||||||
if Input.is_action_just_pressed("ui_accept"):
|
if Input.is_action_just_pressed("ui_accept"):
|
||||||
var actionables = actionable_detector.get_overlapping_areas()
|
var actionables = actionable_detector.get_overlapping_areas()
|
||||||
if actionables.size() > 0:
|
if actionables.size() > 0:
|
||||||
|
print("player position: " + str(position) + " actionables position: " + str(actionables[0].global_position))
|
||||||
|
look_direction = (actionables[0].global_position - position).normalized()
|
||||||
|
# geometry.look_at(actionables[0].global_position, Vector3.UP)
|
||||||
actionables[0].action()
|
actionables[0].action()
|
||||||
|
|
||||||
|
get_viewport().set_input_as_handled()
|
||||||
|
return
|
||||||
|
|
||||||
|
if Input.is_action_just_pressed("interaction"):
|
||||||
|
interaction_state = true
|
||||||
|
|
||||||
|
get_viewport().set_input_as_handled()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[gd_scene load_steps=7 format=3 uid="uid://ch0s3dxx3rpir"]
|
[gd_scene load_steps=7 format=3 uid="uid://ch0s3dxx3rpir"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://objects/player.gd" id="1_sen68"]
|
[ext_resource type="Script" path="res://objects/player.gd" id="1_qkf7c"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dy8vjf760prhq" path="res://assets/characters/rogue.tscn" id="2_whuis"]
|
[ext_resource type="PackedScene" uid="uid://dy8vjf760prhq" path="res://assets/characters/rogue.tscn" id="2_whuis"]
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jd31k"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jd31k"]
|
||||||
|
@ -19,7 +19,7 @@ height = 0.952333
|
||||||
radius = 0.194932
|
radius = 0.194932
|
||||||
|
|
||||||
[node name="Player" type="CharacterBody3D"]
|
[node name="Player" type="CharacterBody3D"]
|
||||||
script = ExtResource("1_sen68")
|
script = ExtResource("1_qkf7c")
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.3, 0)
|
||||||
|
@ -36,13 +36,13 @@ transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0, 0)
|
||||||
|
|
||||||
[node name="Rogue" parent="Geometry" instance=ExtResource("2_whuis")]
|
[node name="Rogue" parent="Geometry" instance=ExtResource("2_whuis")]
|
||||||
|
|
||||||
[node name="ActionableDetector" type="Area3D" parent="."]
|
[node name="ActionableDetector" type="Area3D" parent="Geometry"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.325311)
|
transform = Transform3D(2.5, 0, 0, 0, 2.5, 0, 0, 0, 2.5, 0, 0, 0.813277)
|
||||||
collision_layer = 0
|
collision_layer = 0
|
||||||
collision_mask = 16
|
collision_mask = 16
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="ActionableDetector"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Geometry/ActionableDetector"]
|
||||||
shape = SubResource("SphereShape3D_wrkyq")
|
shape = SubResource("SphereShape3D_wrkyq")
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="."]
|
[node name="Camera3D" type="Camera3D" parent="."]
|
||||||
|
|
|
@ -121,6 +121,13 @@ toggle_inventory={
|
||||||
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null)
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":6,"pressure":0.0,"pressed":true,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
interaction={
|
||||||
|
"deadzone": 0.5,
|
||||||
|
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null)
|
||||||
|
, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null)
|
||||||
|
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
[internationalization]
|
[internationalization]
|
||||||
|
|
||||||
|
|
|
@ -185,6 +185,7 @@ grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
mouse_filter = 1
|
||||||
theme = ExtResource("4_el4q2")
|
theme = ExtResource("4_el4q2")
|
||||||
script = ExtResource("5_jkbjp")
|
script = ExtResource("5_jkbjp")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue