update animation + adding multiple creature + escape to stop instance when are playing
This commit is contained in:
parent
e8f6a8ad49
commit
75e5b05b24
10 changed files with 278 additions and 37 deletions
15
README.md
15
README.md
|
@ -1,15 +1,4 @@
|
||||||
1/ To check error on
|
VERSION GODOT : 3.3.3
|
||||||
Impossible de charger le script de l’extension depuis le chemin : « res://addons/kh_window/kh_window_plugin.gd ». Cela peut être dû à une erreur de programmation dans ce script.
|
https://downloads.tuxfamily.org/godotengine/3.3.3/Godot_v3.3.3-stable_x11.64.zip
|
||||||
|
|
||||||
|
|
||||||
2/
|
|
||||||
17/06/2021 | 21:49:01 Zatalyz: pour les nouveautés : il faudrait que le texte ne demande pas de scroll horizontal, qu'il s'adapte à la largeur de cette fenêtre. 80 caractères si tu cherche la meilleure taille pour ce morceau :)
|
|
||||||
|
|
||||||
dépend de la taille du texte, si trop grand ..., mais bonne remarque je note
|
|
||||||
|
|
||||||
|
|
||||||
17/06/2021 | 21:52:17 Zatalyz: ha, un détail : quand on choisit "tête", c'est pas mal de zoomer sur la tête
|
|
||||||
17/06/2021 | 21:52:47 Zatalyz: Ha oui, le nom commence par M, donc ça l'a fait apparaitre... je dirais : pas de raccourci sur cet écran :D
|
|
||||||
17/06/2021 | 21:53:07 Zatalyz: (zoomer automatiquement... j'ai trouvé le zoom sinon)
|
|
||||||
|
|
||||||
3/ je note ajouter un icon pour juke box
|
|
||||||
|
|
|
@ -24,6 +24,11 @@ _global_script_classes=[ {
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://ressources/scripts/creatures/creature.gd"
|
"path": "res://ressources/scripts/creatures/creature.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "KinematicBody",
|
||||||
|
"class": "CreatureRoot",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://scenes/player/creature_root.gd"
|
||||||
|
}, {
|
||||||
"base": "Node",
|
"base": "Node",
|
||||||
"class": "Creature_old",
|
"class": "Creature_old",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
|
@ -98,6 +103,7 @@ _global_script_class_icons={
|
||||||
"Cloth": "",
|
"Cloth": "",
|
||||||
"Creature": "",
|
"Creature": "",
|
||||||
"CreatureOld": "",
|
"CreatureOld": "",
|
||||||
|
"CreatureRoot": "",
|
||||||
"Creature_old": "",
|
"Creature_old": "",
|
||||||
"Data": "",
|
"Data": "",
|
||||||
"Equipment": "",
|
"Equipment": "",
|
||||||
|
@ -268,7 +274,7 @@ interact={
|
||||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"unicode":0,"echo":false,"script":null)
|
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":69,"unicode":0,"echo":false,"script":null)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
menu_pause={
|
menu={
|
||||||
"deadzone": 0.5,
|
"deadzone": 0.5,
|
||||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":80,"unicode":0,"echo":false,"script":null)
|
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":80,"unicode":0,"echo":false,"script":null)
|
||||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"unicode":0,"echo":false,"script":null)
|
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"unicode":0,"echo":false,"script":null)
|
||||||
|
|
79
scenes/game/alpha.gd
Normal file
79
scenes/game/alpha.gd
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
extends Spatial
|
||||||
|
|
||||||
|
|
||||||
|
# Declare member variables here. Examples:
|
||||||
|
# var a = 2
|
||||||
|
# var b = "text"
|
||||||
|
|
||||||
|
# var list_creature = []
|
||||||
|
|
||||||
|
func generate_map(pos : Vector3):
|
||||||
|
Config.msg_info("Generate Map")
|
||||||
|
# Clear old map
|
||||||
|
for n in $map.get_children():
|
||||||
|
$map.remove_child(n)
|
||||||
|
n.queue_free()
|
||||||
|
# Push new map
|
||||||
|
for y in range(-20, 21):
|
||||||
|
for x in range(-20, 21):
|
||||||
|
var z = (x + y) * (x - y)
|
||||||
|
if z < 0:
|
||||||
|
z = -z
|
||||||
|
var position:Vector3 = 10.0 * Vector3( x, 0.0, y )
|
||||||
|
var name = "res://scenes/game/area_0_0.tscn"
|
||||||
|
if int(z/3) % 3 == 0:
|
||||||
|
if z % 2 == 0:
|
||||||
|
name = "res://scenes/game/area_0_0.tscn"
|
||||||
|
else:
|
||||||
|
name = "res://scenes/game/area_0_1.tscn"
|
||||||
|
elif int(z/3) % 3 == 1:
|
||||||
|
if z % 2 == 0:
|
||||||
|
name = "res://scenes/game/area_1_0.tscn"
|
||||||
|
else:
|
||||||
|
name = "res://scenes/game/area_1_1.tscn"
|
||||||
|
else:
|
||||||
|
if z % 2 == 0:
|
||||||
|
name = "res://scenes/game/area_1_2.tscn"
|
||||||
|
else:
|
||||||
|
name = "res://scenes/game/area_2_2.tscn"
|
||||||
|
|
||||||
|
Config.msg_info("Map:" + str(x) + ":" + str(y) + " -> " + name + " : "+ str(z) + " / " + str(int(z/3)%3))
|
||||||
|
|
||||||
|
var map:Spatial = load( name ).instance()
|
||||||
|
map.set_translation(position)
|
||||||
|
$map.add_child( map )
|
||||||
|
|
||||||
|
|
||||||
|
func add_creature(name:String, model:String, position:Vector3, orientation:Vector3):
|
||||||
|
var creature:Spatial = load( model ).instance()
|
||||||
|
creature.set_name(name)
|
||||||
|
creature.set_rotation(orientation)
|
||||||
|
creature.set_translation(position)
|
||||||
|
# list_creature.push_back(creature)
|
||||||
|
$creatures.add_child(creature)
|
||||||
|
|
||||||
|
|
||||||
|
func move_creature(name, model, posx, posy, posz):
|
||||||
|
var position:Vector3 = Vector3( posx, posy, posz )
|
||||||
|
if $creatures.has_node(name):
|
||||||
|
var creature:Spatial = $creatures.get_node(name)
|
||||||
|
var pos : Vector3 = $creature.get_global_transform().origin
|
||||||
|
# $creatures.get_node(name).get_
|
||||||
|
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready():
|
||||||
|
var current: Vector3 = Vector3( 0.0, 0.0, 0.0 )
|
||||||
|
generate_map(current)
|
||||||
|
self.add_creature("RA_1", "res://scenes/player/creature_raference.tscn", Vector3( 1.0, 1.0, 1.0 ), Vector3( 0.0, 0.0, 0.0 ))
|
||||||
|
self.add_creature("RA_2", "res://scenes/player/creature_raference.tscn", Vector3( 2.0, 0.01, 5.0 ), Vector3( 0.0, 1.0, 0.0 ))
|
||||||
|
self.add_creature("RA_3", "res://scenes/player/creature_raference.tscn", Vector3( 1.0, 0.01, 5.0 ), Vector3( 0.0, -3.141592, 0.0 ))
|
||||||
|
self.add_creature("Arche_1", "res://scenes/player/creature_arche.tscn", Vector3( -2.0, 0.01, 2.0 ), Vector3( 0.0, -3.141592, 0.0 ))
|
||||||
|
self.add_creature("Isidor_1", "res://scenes/player/creature_isidor.tscn", Vector3( -2.0, 0.01, 5.0 ), Vector3( 0.0, -3.141592, 0.0 ))
|
||||||
|
pass # Replace with function body.
|
||||||
|
|
||||||
|
|
||||||
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||||
|
func _process(delta):
|
||||||
|
Config.msg_info("update Map")
|
||||||
|
pass
|
|
@ -10,3 +10,5 @@ script = ExtResource( 5 )
|
||||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.01, 0 )
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.01, 0 )
|
||||||
|
|
||||||
[node name="map" type="Spatial" parent="."]
|
[node name="map" type="Spatial" parent="."]
|
||||||
|
|
||||||
|
[node name="creatures" type="Spatial" parent="."]
|
||||||
|
|
42
scenes/game/model.tscn
Normal file
42
scenes/game/model.tscn
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
[gd_scene load_steps=8 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://scenes/game/area_1_0.tscn" type="PackedScene" id=1]
|
||||||
|
[ext_resource path="res://scenes/game/area_0_0.tscn" type="PackedScene" id=2]
|
||||||
|
[ext_resource path="res://scenes/game/area_1_1.tscn" type="PackedScene" id=3]
|
||||||
|
[ext_resource path="res://scenes/game/area_0_1.tscn" type="PackedScene" id=4]
|
||||||
|
[ext_resource path="res://scenes/game/area_1_2.tscn" type="PackedScene" id=6]
|
||||||
|
[ext_resource path="res://scenes/game/area_2_2.tscn" type="PackedScene" id=7]
|
||||||
|
[ext_resource path="res://scenes/player/playerB.tscn" type="PackedScene" id=8]
|
||||||
|
|
||||||
|
[node name="spatial" type="Spatial"]
|
||||||
|
|
||||||
|
[node name="player" parent="." instance=ExtResource( 8 )]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.01, 0 )
|
||||||
|
|
||||||
|
[node name="area_0_0" parent="." instance=ExtResource( 2 )]
|
||||||
|
|
||||||
|
[node name="area_0_1" parent="." instance=ExtResource( 4 )]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 0 )
|
||||||
|
|
||||||
|
[node name="area_1_0" parent="." instance=ExtResource( 1 )]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10 )
|
||||||
|
|
||||||
|
[node name="area_1_1" parent="." instance=ExtResource( 3 )]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, 10 )
|
||||||
|
|
||||||
|
[node name="area_1_2" parent="." instance=ExtResource( 6 )]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -9.9736, 0.0109801, -0.0108967 )
|
||||||
|
|
||||||
|
[node name="area_2_2" parent="." instance=ExtResource( 7 )]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, 10 )
|
||||||
|
|
||||||
|
[node name="area_3_0" parent="." instance=ExtResource( 1 )]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 10, 0, -10 )
|
||||||
|
|
||||||
|
[node name="area_3_1" parent="." instance=ExtResource( 3 )]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -10 )
|
||||||
|
|
||||||
|
[node name="area_3_2" parent="." instance=ExtResource( 2 )]
|
||||||
|
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0, -10 )
|
||||||
|
|
||||||
|
[node name="map" type="Spatial" parent="."]
|
21
scenes/player/creature_arche.tscn
Normal file
21
scenes/player/creature_arche.tscn
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://scenes/player/creature_root.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://assets/creatures/arche/arche.tscn" type="PackedScene" id=2]
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape" id=1]
|
||||||
|
height = 0.1
|
||||||
|
|
||||||
|
[node name="spatial" type="KinematicBody"]
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
|
[node name="collision_shape" type="CollisionShape" parent="."]
|
||||||
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
|
[node name="arche" parent="collision_shape" instance=ExtResource( 2 )]
|
||||||
|
|
||||||
|
[node name="camera_tps" type="Camera" parent="."]
|
||||||
|
transform = Transform( -1, 8.74228e-08, -5.0822e-21, 8.74228e-08, 1, -8.74228e-08, -7.64274e-15, -8.74228e-08, -1, 0, 1.23455, -1.8659 )
|
||||||
|
|
||||||
|
[node name="camera_fps" type="Camera" parent="."]
|
||||||
|
transform = Transform( -1, 8.74228e-08, 0, 8.74228e-08, 1, -8.74228e-08, -7.64274e-15, -8.74228e-08, -1, 0, 1.5747, 0.453716 )
|
23
scenes/player/creature_isidor.tscn
Normal file
23
scenes/player/creature_isidor.tscn
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
[gd_scene load_steps=4 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://assets/creatures/isidor/isidor.tscn" type="PackedScene" id=1]
|
||||||
|
[ext_resource path="res://scenes/player/creature_root.gd" type="Script" id=2]
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape" id=1]
|
||||||
|
radius = 0.5
|
||||||
|
height = 0.1
|
||||||
|
|
||||||
|
[node name="spatial" type="KinematicBody"]
|
||||||
|
script = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="collision_shape" type="CollisionShape" parent="."]
|
||||||
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
|
[node name="isidor" parent="collision_shape" instance=ExtResource( 1 )]
|
||||||
|
transform = Transform( -4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 0, 0 )
|
||||||
|
|
||||||
|
[node name="camera_tps" type="Camera" parent="."]
|
||||||
|
transform = Transform( -1, 8.74228e-08, -5.0822e-21, 8.74228e-08, 1, -8.74228e-08, -7.64274e-15, -8.74228e-08, -1, 0, 1.23455, -1.8659 )
|
||||||
|
|
||||||
|
[node name="camera_fps" type="Camera" parent="."]
|
||||||
|
transform = Transform( -1, 8.74228e-08, -5.0822e-21, 8.74228e-08, 1, -8.74228e-08, -7.64274e-15, -8.74228e-08, -1, 0, 1.5747, 0.453716 )
|
|
@ -1,28 +1,13 @@
|
||||||
extends KinematicBody
|
extends CreatureRoot
|
||||||
|
#extends KinematicBody
|
||||||
# Declare member variables here. Examples:
|
|
||||||
# var a = 2
|
|
||||||
# var b = "text"
|
|
||||||
|
|
||||||
var rotation_speed_factor = 0.01
|
|
||||||
var move_speed = 2.5
|
|
||||||
var run_speed = 5.0
|
|
||||||
var max_speed = 12.0
|
|
||||||
export var gravity = -9.0
|
|
||||||
var animation_walk = "_bip01_ca_female_march"
|
|
||||||
var animation_run = "_bip01_ca_female_run"
|
|
||||||
var animation_scan_loop = "_bip01_ca_female_scanne_loop"
|
|
||||||
var animation_teleport_loop = "_bip01_ca_female_teleporte_loop"
|
|
||||||
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready():
|
func _ready():
|
||||||
pass # Replace with function body.
|
animation_walk = "_bip01_ca_female_march"
|
||||||
|
animation_run = "_bip01_ca_female_run"
|
||||||
|
animation_scan_loop = "_bip01_ca_female_scanne_loop"
|
||||||
|
animation_teleport_loop = "_bip01_ca_female_teleporte_loop"
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
||||||
#func _process(delta):
|
|
||||||
# pass
|
|
||||||
|
|
||||||
func get_animation_idle():
|
func get_animation_idle():
|
||||||
return "_bip01_ca_female_idle"
|
return "_bip01_ca_female_idle"
|
||||||
|
|
92
scenes/player/creature_root.gd
Normal file
92
scenes/player/creature_root.gd
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
extends KinematicBody
|
||||||
|
class_name CreatureRoot
|
||||||
|
|
||||||
|
|
||||||
|
var animation_walk = "march"
|
||||||
|
var animation_run = "run"
|
||||||
|
var animation_scan_loop = "scanne_loop"
|
||||||
|
var animation_teleport_loop = "teleporte_loop"
|
||||||
|
|
||||||
|
var rotation_speed_factor = 0.01
|
||||||
|
var move_speed = 2.5
|
||||||
|
var run_speed = 5.0
|
||||||
|
var max_speed = 12.0
|
||||||
|
export var gravity = -9.0
|
||||||
|
var animation_object:AnimationPlayer = null
|
||||||
|
var orientation = 0.0
|
||||||
|
var direction = Vector3.ZERO
|
||||||
|
var velocity = Vector3.ZERO
|
||||||
|
var rotatex = 0.0
|
||||||
|
var move_run: bool = false
|
||||||
|
var move_toggle_run: bool = false
|
||||||
|
|
||||||
|
|
||||||
|
enum ACTION {
|
||||||
|
idle,
|
||||||
|
walk,
|
||||||
|
run,
|
||||||
|
scan,
|
||||||
|
teleport,
|
||||||
|
}
|
||||||
|
|
||||||
|
var current_action = ACTION.idle
|
||||||
|
|
||||||
|
func search_animation( obj ) -> bool:
|
||||||
|
var ret:bool = false
|
||||||
|
for i in obj.get_children():
|
||||||
|
if i.get_name() == "AnimationPlayer":
|
||||||
|
animation_object = i
|
||||||
|
return true
|
||||||
|
else:
|
||||||
|
ret = search_animation(i)
|
||||||
|
if ret == true:
|
||||||
|
return ret
|
||||||
|
return false
|
||||||
|
|
||||||
|
|
||||||
|
func update_blend_shapes( obj , param):
|
||||||
|
#blend_shapes = {}
|
||||||
|
update_blend_shapes_step(obj, param, "")
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
func update_blend_shapes_step( obj, param, father = "" ):
|
||||||
|
for i in obj.get_children():
|
||||||
|
var root = father + str(i.name) + "."
|
||||||
|
if i is MeshInstance:
|
||||||
|
for key in i.get_property_list():
|
||||||
|
if key.name.substr(0, 13) == "blend_shapes/":
|
||||||
|
var blend = key.name.substr(13)
|
||||||
|
if param.has(blend):
|
||||||
|
i.set( "blend_shapes/"+blend, param[blend] )
|
||||||
|
update_blend_shapes_step( i, param, root)
|
||||||
|
|
||||||
|
|
||||||
|
func get_animation_idle():
|
||||||
|
# Possibility to have a multiple idle animation and select one
|
||||||
|
return "idle"
|
||||||
|
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready():
|
||||||
|
current_action = ACTION.idle
|
||||||
|
search_animation( self )
|
||||||
|
launch_animation_idle()
|
||||||
|
|
||||||
|
|
||||||
|
func launch_animation_idle():
|
||||||
|
var idlename = self.get_animation_idle()
|
||||||
|
animation_object.play( idlename )
|
||||||
|
animation_object.connect("animation_finished", self, "_on_animation_finished")
|
||||||
|
|
||||||
|
|
||||||
|
func _on_animation_finished(anim_name):
|
||||||
|
Config.msg_debug( "{" + self.name + "} Animation finished:" + anim_name)
|
||||||
|
animation_object.play( anim_name )
|
||||||
|
|
||||||
|
|
||||||
|
func update_animation(action, anim_name):
|
||||||
|
# Change animation if we need
|
||||||
|
if current_action != action:
|
||||||
|
current_action = action
|
||||||
|
animation_object.play( anim_name )
|
|
@ -64,7 +64,7 @@ func update_animation(action, anim_name):
|
||||||
|
|
||||||
|
|
||||||
func _on_AnimationPlayer_animation_finished(anim_name):
|
func _on_AnimationPlayer_animation_finished(anim_name):
|
||||||
Config.msg_debug("Animation finished:" + anim_name)
|
Config.msg_debug( "{" + self.name + "} Animation finished:" + anim_name)
|
||||||
animation_object.play( anim_name )
|
animation_object.play( anim_name )
|
||||||
|
|
||||||
|
|
||||||
|
@ -208,3 +208,5 @@ func _input( event ):
|
||||||
$creature/camera_fps.make_current()
|
$creature/camera_fps.make_current()
|
||||||
else:
|
else:
|
||||||
$creature/camera_tps.make_current()
|
$creature/camera_tps.make_current()
|
||||||
|
elif event.is_action_pressed("menu"):
|
||||||
|
get_tree().quit()
|
||||||
|
|
Loading…
Reference in a new issue