credit
This commit is contained in:
@@ -1,8 +1,15 @@
|
||||
extends MultiMeshInstance3D
|
||||
|
||||
@onready var anim_player: AnimationPlayer = $"../AnimationPlayer"
|
||||
|
||||
func _ready() -> void:
|
||||
anim_player.play("will_turning", -1, .5)
|
||||
|
||||
var characters_seating:Array = get_tree().get_nodes_in_group("char_seat")
|
||||
for char in characters_seating:
|
||||
char.get_node("AnimationPlayer").play("mixamo_com")
|
||||
char.get_node("AnimationPlayer").play("talk_seating")
|
||||
var mesh = char.get_node("Root").get_node("Skeleton3D").get_node("characterMedium")
|
||||
mesh.set_instance_shader_parameter("skin_index", randi_range(1, 16))
|
||||
|
||||
await get_tree().create_timer( randf_range(0.1, 1.5) ).timeout
|
||||
|
||||
|
||||
@@ -3,22 +3,27 @@ extends CharacterBody3D
|
||||
@onready var sprite_label: Sprite3D = $Sprite3D
|
||||
@onready var label: Label = $Sprite3D/SubViewport/Label
|
||||
@onready var area_3d: Area3D = $Area3D
|
||||
@onready var collision_shape_3d: CollisionShape3D = $Area3D/CollisionShape3D
|
||||
|
||||
@onready var anim_player: AnimationPlayer = $character/AnimationPlayer
|
||||
@onready var camera_zoom: Camera3D = $CameraZoom
|
||||
@onready var player: CharacterBody3D = $"../../Player"
|
||||
@onready var frog: CharacterBody3D = $"../../frog"
|
||||
@onready var area_3d_zoom: Area3D = $Area3DZoom
|
||||
|
||||
@onready var indicateur_tarte: CSGTorus3D = $"../indicateur_tarte"
|
||||
@onready var client_spawner: Node3D = $"../client_spawner"
|
||||
|
||||
@onready var fox: CharacterBody3D = $"../../Animals/Foxes/fox"
|
||||
@onready var fox_2: CharacterBody3D = $"../../Animals/Foxes/fox2"
|
||||
|
||||
var zoom_active : bool = false
|
||||
|
||||
func zoom_dialog():
|
||||
label.text = Sauvegarde.get_text("coco" + str( 0 ) )
|
||||
camera_zoom.make_current()
|
||||
zoom_active = true
|
||||
anim_player.play("RootAction")
|
||||
anim_player.play("talking")
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if zoom_active:
|
||||
@@ -29,22 +34,31 @@ func _process(delta: float) -> void:
|
||||
player.camera.make_current()
|
||||
player.can_play = true
|
||||
|
||||
anim_player.stop()
|
||||
anim_player.play("Idling")
|
||||
|
||||
|
||||
func dialog():
|
||||
rotation.y = deg_to_rad( 180 )
|
||||
anim_player.play("RootAction")
|
||||
if !player.is_client_game_launched:
|
||||
rotation.y = deg_to_rad( 180 )
|
||||
anim_player.play("talking")
|
||||
|
||||
for i in range(1,3):
|
||||
var p
|
||||
if player.is_client_game_launched:
|
||||
p = range(4, 8)
|
||||
else:
|
||||
p = range(1, 4)
|
||||
for i in p:
|
||||
label.text = Sauvegarde.get_text("coco" + str( i ) )
|
||||
await get_tree().create_timer( 1 ).timeout
|
||||
await get_tree().create_timer( 6 ).timeout
|
||||
|
||||
anim_player.play("Idling")
|
||||
|
||||
rotation.y = deg_to_rad( -90 )
|
||||
if !player.is_client_game_launched:
|
||||
rotation.y = deg_to_rad( -90 )
|
||||
anim_player.stop()
|
||||
sprite_label.visible = false
|
||||
player.set_dialog_mode()
|
||||
player.is_client_game_launched = true
|
||||
|
||||
indicateur_tarte.visible = true
|
||||
client_spawner.start_timer()
|
||||
@@ -57,7 +71,7 @@ func _on_area_3d_body_entered(body: Node3D) -> void:
|
||||
sprite_label.visible = true
|
||||
player.set_dialog_mode( global_position, 0)
|
||||
dialog()
|
||||
area_3d.queue_free()
|
||||
collision_shape_3d.disabled = true
|
||||
|
||||
|
||||
func _on_area_3d_zoom_body_entered(body: Node3D) -> void:
|
||||
@@ -65,3 +79,11 @@ func _on_area_3d_zoom_body_entered(body: Node3D) -> void:
|
||||
player.can_play = false
|
||||
area_3d_zoom.queue_free()
|
||||
zoom_dialog()
|
||||
|
||||
func reactivate_area3D():
|
||||
collision_shape_3d.disabled = false
|
||||
anim_player.stop()
|
||||
fox.flee_enabled = true
|
||||
fox_2.flee_enabled = true
|
||||
player.can_run = true
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
#@tool
|
||||
#extends EditorScript
|
||||
#
|
||||
#func _run():
|
||||
#var paths = [
|
||||
#"res://assets/img/textures/faces/face_bis1.png",
|
||||
#"res://assets/img/textures/faces/face_bis2.png",
|
||||
#"res://assets/img/textures/faces/face_bis3.png",
|
||||
#"res://assets/img/textures/faces/face_bis4.png",
|
||||
#"res://assets/img/textures/faces/face_bis5.png",
|
||||
#"res://assets/img/textures/faces/face_bis6.png",
|
||||
#"res://assets/img/textures/faces/face_bis7.png",
|
||||
#"res://assets/img/textures/faces/face_bis8.png",
|
||||
#"res://assets/img/textures/faces/face_bis9.png",
|
||||
#"res://assets/img/textures/faces/face_bis10.png",
|
||||
#"res://assets/img/textures/faces/face_bis11.png",
|
||||
#"res://assets/img/textures/faces/face_bis12.png",
|
||||
#"res://assets/img/textures/faces/face_bis13.png",
|
||||
#"res://assets/img/textures/faces/face_bis14.png",
|
||||
#"res://assets/img/textures/faces/face_bis15.png",
|
||||
#"res://assets/img/textures/faces/face_bis16.png",
|
||||
#]
|
||||
#var images: Array[Image] = []
|
||||
#for p in paths:
|
||||
#print("p: ", p)
|
||||
#images.append(load(p).get_image())
|
||||
#
|
||||
#var tex_array = Texture2DArray.new()
|
||||
#tex_array.create_from_images(images)
|
||||
#
|
||||
#ResourceSaver.save(tex_array, "res://assets/img/textures/faces.tres")
|
||||
#print("Saved skin_array.tres with ", images.size(), " layers")
|
||||
@@ -0,0 +1 @@
|
||||
uid://cy6xfc3foi1oy
|
||||
@@ -11,12 +11,13 @@ var player
|
||||
|
||||
func _ready() -> void:
|
||||
doggo_anim_player.play("sleep")
|
||||
anim_player.play("Idling")
|
||||
|
||||
func dialog():
|
||||
anim_player.play("RootAction")
|
||||
anim_player.play("talking")
|
||||
for i in range(1, 7):
|
||||
label.text = Sauvegarde.get_text("neige" + str( i ) )
|
||||
await get_tree().create_timer( 7 ).timeout
|
||||
await get_tree().create_timer( 5 ).timeout
|
||||
|
||||
anim_player.stop()
|
||||
sprite_label.visible = false
|
||||
@@ -27,7 +28,7 @@ func _on_area_3d_body_entered(body: Node3D) -> void:
|
||||
if body.is_in_group("player"):
|
||||
player = body
|
||||
sprite_label.visible = true
|
||||
player.set_dialog_mode( global_position, 0)
|
||||
player.set_dialog_mode( global_position)
|
||||
dialog()
|
||||
area_3d.queue_free()
|
||||
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
@tool
|
||||
extends EditorScript
|
||||
|
||||
# Path to your new NPC scene
|
||||
const NEW_NPC_SCENE := preload("res://scenes/character_seat_talking.tscn")
|
||||
|
||||
func _run():
|
||||
var root := get_scene()
|
||||
if root == null:
|
||||
push_error("Open the scene in the editor before running this script.")
|
||||
return
|
||||
|
||||
var seating := root.find_child("characters-seating", true, false)
|
||||
if seating == null:
|
||||
push_error("Could not find 'characters-seating' node.")
|
||||
return
|
||||
|
||||
var replaced := 0
|
||||
|
||||
for grp in seating.get_children():
|
||||
# Snapshot the children first, since we'll be modifying the group as we go
|
||||
var old_npcs := grp.get_children()
|
||||
|
||||
for old_npc in old_npcs:
|
||||
if not (old_npc is Node3D):
|
||||
push_warning(old_npc.name + " in " + grp.name + " is not a Node3D, skipping.")
|
||||
continue
|
||||
|
||||
var old_transform: Transform3D = old_npc.transform
|
||||
var old_name := old_npc.name
|
||||
|
||||
var new_npc: Node3D = NEW_NPC_SCENE.instantiate()
|
||||
|
||||
grp.remove_child(old_npc)
|
||||
old_npc.queue_free()
|
||||
|
||||
grp.add_child(new_npc)
|
||||
new_npc.owner = root
|
||||
new_npc.transform = old_transform
|
||||
new_npc.name = old_name
|
||||
|
||||
replaced += 1
|
||||
|
||||
print("Replaced ", replaced, " NPC(s).")
|
||||
@@ -0,0 +1 @@
|
||||
uid://btaqj1ucp5j8n
|
||||
Reference in New Issue
Block a user