grape man animation controller
This commit is contained in:
		
							parent
							
								
									253fca1070
								
							
						
					
					
						commit
						048c233514
					
				
					 16 changed files with 9229 additions and 6 deletions
				
			
		
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										12
									
								
								godot/.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								godot/.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
# Godot 4+ specific ignores
 | 
			
		||||
.godot/
 | 
			
		||||
*.bend1
 | 
			
		||||
*.bend2
 | 
			
		||||
*.bend3
 | 
			
		||||
*.bend4
 | 
			
		||||
*.bend5
 | 
			
		||||
*.bend6
 | 
			
		||||
*.blend1
 | 
			
		||||
*.blend2
 | 
			
		||||
*.blend3
 | 
			
		||||
*.blend4
 | 
			
		||||
*.blend5
 | 
			
		||||
*.blend6
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								godot/Models/grape_animations/idle.res
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								godot/Models/grape_animations/idle.res
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								godot/Models/grape_animations/pickup.res
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								godot/Models/grape_animations/pickup.res
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								godot/Models/grape_animations/upper_body_holding.res
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								godot/Models/grape_animations/upper_body_holding.res
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								godot/Models/grape_animations/upper_body_idle.res.res
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								godot/Models/grape_animations/upper_body_idle.res.res
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								godot/Models/grape_animations/walk.res
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								godot/Models/grape_animations/walk.res
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										45
									
								
								godot/Models/grape_man.gd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								godot/Models/grape_man.gd
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,45 @@
 | 
			
		|||
extends Node3D
 | 
			
		||||
 | 
			
		||||
var upper_body_animation: AnimationPlayer
 | 
			
		||||
var full_body_animation: AnimationPlayer
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
signal anim_check_grab(position: Vector3)
 | 
			
		||||
 | 
			
		||||
var pickup_animation_in_progress = false
 | 
			
		||||
signal pickup_animation_finished
 | 
			
		||||
 | 
			
		||||
func _ready():
 | 
			
		||||
	upper_body_animation = $AnimationPlayer.duplicate()
 | 
			
		||||
	add_child(upper_body_animation)
 | 
			
		||||
	full_body_animation = $AnimationPlayer
 | 
			
		||||
	full_body_animation.play("Idle")
 | 
			
		||||
	upper_body_animation.play("UpperBodyIdle")
 | 
			
		||||
 | 
			
		||||
func hold():
 | 
			
		||||
	if pickup_animation_in_progress:
 | 
			
		||||
		await pickup_animation_finished
 | 
			
		||||
	upper_body_animation.play("UpperBodyHolding")
 | 
			
		||||
 | 
			
		||||
func pickup():
 | 
			
		||||
	pickup_animation_in_progress = true
 | 
			
		||||
	full_body_animation.play("Pickup")
 | 
			
		||||
	await full_body_animation.animation_finished
 | 
			
		||||
	full_body_animation.play("Idle")
 | 
			
		||||
	upper_body_animation.play("UpperBodyIdle")
 | 
			
		||||
	pickup_animation_in_progress = false
 | 
			
		||||
	emit_signal("pickup_animation_finished")
 | 
			
		||||
	
 | 
			
		||||
func idle():
 | 
			
		||||
	full_body_animation.play("Idle")
 | 
			
		||||
 | 
			
		||||
func drop():
 | 
			
		||||
	full_body_animation.play("Idle")
 | 
			
		||||
	upper_body_animation.play("UpperBodyIdle")
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
func walk():
 | 
			
		||||
	full_body_animation.play("Walk")
 | 
			
		||||
 | 
			
		||||
func animation_key_grab():
 | 
			
		||||
	emit_signal("anim_check_grab", $GrabPointLocation.global_transform)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								godot/Models/grape_man.glb
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								godot/Models/grape_man.glb
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										9030
									
								
								godot/Models/grape_man.glb.import
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9030
									
								
								godot/Models/grape_man.glb.import
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										24
									
								
								godot/Models/grape_man.tscn
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								godot/Models/grape_man.tscn
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
[gd_scene load_steps=3 format=3 uid="uid://bgoo1lbt28na"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bhanbx2dyhv2d" path="res://Models/grape_man.glb" id="1_fh5yr"]
 | 
			
		||||
[ext_resource type="Script" path="res://Models/grape_man.gd" id="2_ksje8"]
 | 
			
		||||
 | 
			
		||||
[node name="grape_man" instance=ExtResource("1_fh5yr")]
 | 
			
		||||
script = ExtResource("2_ksje8")
 | 
			
		||||
 | 
			
		||||
[node name="Skeleton3D" parent="rig" index="0"]
 | 
			
		||||
bones/0/rotation = Quaternion(0.0912427, 0, 0, 0.995829)
 | 
			
		||||
bones/1/rotation = Quaternion(-0.0891896, 1.18734e-07, -1.06322e-08, 0.996015)
 | 
			
		||||
bones/2/rotation = Quaternion(0.0133933, -1.19199e-07, 1.5966e-09, 0.99991)
 | 
			
		||||
bones/3/rotation = Quaternion(-0.00997737, 0.100365, -0.694951, 0.711948)
 | 
			
		||||
bones/4/rotation = Quaternion(0.0907207, -0.104937, 0.0616428, 0.988412)
 | 
			
		||||
bones/4/scale = Vector3(1, 1, 1)
 | 
			
		||||
bones/5/rotation = Quaternion(-0.00997737, -0.100365, 0.694951, 0.711948)
 | 
			
		||||
bones/6/rotation = Quaternion(0.0907207, 0.104937, -0.0616428, 0.988412)
 | 
			
		||||
bones/6/scale = Vector3(1, 1, 1)
 | 
			
		||||
bones/7/rotation = Quaternion(0.0142813, -6.34259e-18, -4.44044e-16, 0.999898)
 | 
			
		||||
bones/10/rotation = Quaternion(0.105246, 0.0039338, -0.0113526, 0.994374)
 | 
			
		||||
bones/15/rotation = Quaternion(0.105246, -0.0039338, 0.0113526, 0.994374)
 | 
			
		||||
 | 
			
		||||
[node name="GrabPointLocation" type="Node3D" parent="." index="2"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.29365)
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								godot/Models/grape_man_grape_man.png
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								godot/Models/grape_man_grape_man.png
									 (Stored with Git LFS)
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										36
									
								
								godot/Models/grape_man_grape_man.png.import
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								godot/Models/grape_man_grape_man.png.import
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,36 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://ce7qteyplgh7d"
 | 
			
		||||
path.s3tc="res://.godot/imported/grape_man_grape_man.png-2e5aad214d556f9249cd2523505b0b56.s3tc.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"imported_formats": ["s3tc_bptc"],
 | 
			
		||||
"vram_texture": true
 | 
			
		||||
}
 | 
			
		||||
generator_parameters={}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://Models/grape_man_grape_man.png"
 | 
			
		||||
dest_files=["res://.godot/imported/grape_man_grape_man.png-2e5aad214d556f9249cd2523505b0b56.s3tc.ctex"]
 | 
			
		||||
 | 
			
		||||
[params]
 | 
			
		||||
 | 
			
		||||
compress/mode=2
 | 
			
		||||
compress/high_quality=false
 | 
			
		||||
compress/lossy_quality=0.7
 | 
			
		||||
compress/hdr_compression=1
 | 
			
		||||
compress/normal_map=0
 | 
			
		||||
compress/channel_pack=0
 | 
			
		||||
mipmaps/generate=true
 | 
			
		||||
mipmaps/limit=-1
 | 
			
		||||
roughness/mode=0
 | 
			
		||||
roughness/src_normal=""
 | 
			
		||||
process/fix_alpha_border=true
 | 
			
		||||
process/premult_alpha=false
 | 
			
		||||
process/normal_map_invert_y=false
 | 
			
		||||
process/hdr_as_srgb=false
 | 
			
		||||
process/hdr_clamp_exposure=false
 | 
			
		||||
process/size_limit=0
 | 
			
		||||
detect_3d/compress_to=0
 | 
			
		||||
							
								
								
									
										22
									
								
								godot/tests/test_grape_man_animation.gd
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								godot/tests/test_grape_man_animation.gd
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
extends Node3D
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_pickup_pressed():
 | 
			
		||||
	$grape_man.pickup()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_drop_pressed():
 | 
			
		||||
	$grape_man.drop()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_idle_pressed():
 | 
			
		||||
	$grape_man.idle()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_walk_pressed():
 | 
			
		||||
	$grape_man.walk()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_hold_pressed():
 | 
			
		||||
	$grape_man.hold()
 | 
			
		||||
							
								
								
									
										60
									
								
								godot/tests/test_grape_man_animation.tscn
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								godot/tests/test_grape_man_animation.tscn
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,60 @@
 | 
			
		|||
[gd_scene load_steps=3 format=3 uid="uid://bqnre1721kev2"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bgoo1lbt28na" path="res://Models/grape_man.tscn" id="1_3cekm"]
 | 
			
		||||
[ext_resource type="Script" path="res://tests/test_grape_man_animation.gd" id="1_uhk63"]
 | 
			
		||||
 | 
			
		||||
[node name="test_grape_man_animation" type="Node3D"]
 | 
			
		||||
script = ExtResource("1_uhk63")
 | 
			
		||||
 | 
			
		||||
[node name="grape_man" parent="." instance=ExtResource("1_3cekm")]
 | 
			
		||||
 | 
			
		||||
[node name="CanvasLayer" type="CanvasLayer" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Control" type="Control" parent="CanvasLayer"]
 | 
			
		||||
layout_mode = 3
 | 
			
		||||
anchors_preset = 15
 | 
			
		||||
anchor_right = 1.0
 | 
			
		||||
anchor_bottom = 1.0
 | 
			
		||||
grow_horizontal = 2
 | 
			
		||||
grow_vertical = 2
 | 
			
		||||
 | 
			
		||||
[node name="VBoxContainer" type="VBoxContainer" parent="CanvasLayer/Control"]
 | 
			
		||||
layout_mode = 1
 | 
			
		||||
anchors_preset = 15
 | 
			
		||||
anchor_right = 1.0
 | 
			
		||||
anchor_bottom = 1.0
 | 
			
		||||
offset_left = 11.0
 | 
			
		||||
offset_top = 15.0
 | 
			
		||||
offset_right = -768.0
 | 
			
		||||
offset_bottom = 15.0
 | 
			
		||||
grow_horizontal = 2
 | 
			
		||||
grow_vertical = 2
 | 
			
		||||
 | 
			
		||||
[node name="Pickup" type="Button" parent="CanvasLayer/Control/VBoxContainer"]
 | 
			
		||||
layout_mode = 2
 | 
			
		||||
text = "Pickup"
 | 
			
		||||
 | 
			
		||||
[node name="Hold" type="Button" parent="CanvasLayer/Control/VBoxContainer"]
 | 
			
		||||
layout_mode = 2
 | 
			
		||||
text = "Hold"
 | 
			
		||||
 | 
			
		||||
[node name="Drop" type="Button" parent="CanvasLayer/Control/VBoxContainer"]
 | 
			
		||||
layout_mode = 2
 | 
			
		||||
text = "Drop"
 | 
			
		||||
 | 
			
		||||
[node name="Idle" type="Button" parent="CanvasLayer/Control/VBoxContainer"]
 | 
			
		||||
layout_mode = 2
 | 
			
		||||
text = "Idle"
 | 
			
		||||
 | 
			
		||||
[node name="Walk" type="Button" parent="CanvasLayer/Control/VBoxContainer"]
 | 
			
		||||
layout_mode = 2
 | 
			
		||||
text = "Walk"
 | 
			
		||||
 | 
			
		||||
[node name="Camera3D" type="Camera3D" parent="."]
 | 
			
		||||
transform = Transform3D(0.551151, 0, 0.834406, 0, 1, 0, -0.834406, 0, 0.551151, 10.2206, 6.04514, 5.32455)
 | 
			
		||||
 | 
			
		||||
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/Pickup" to="." method="_on_pickup_pressed"]
 | 
			
		||||
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/Hold" to="." method="_on_hold_pressed"]
 | 
			
		||||
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/Drop" to="." method="_on_drop_pressed"]
 | 
			
		||||
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/Idle" to="." method="_on_idle_pressed"]
 | 
			
		||||
[connection signal="pressed" from="CanvasLayer/Control/VBoxContainer/Walk" to="." method="_on_walk_pressed"]
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue