āļ§āļēāļāļ°āļĨāļđāļāļŦāļāļąāļāļāļāđāļŠāļāļ"āđāļĄāļāđāļāļŠāđāļāļāļĢāđ āļāļīāļāļĩāđ VS āđāļĄāļāđāļāļŠāđāļāļāļĢāđ āļĒāļđāđāļāđāļāđāļ āļŦāļĨāļąāļāđāļāļĄ āđāļĢāļ·āļāđāļāļŠāļĩāļāđāļēāđāļāđāļāļĩāļĻāļēāļāđāļāļāļāļēāļāđāļēāļ"
04:20
Codigo C#:
using Godot;
using System;
using System.Collections.Generic;
public partial class npc_dialogo : Control
{
[Export]
RichTextLabel label;
Tween Textoanimado;
private int dialogoIndice,actualNpc;
public static readonly Dictionary diccionario = new Dictionary
{
{0,new []{"HOlaHOlaHOlaHOlaHOlaHOlaHOla","COmoHOlaHOlaHOlaHOla","EstasHOlaHOlaHOla"}},
{1,new []{"Kie Onda","TOdo","BEm"}}
};
public override void _Ready()
{
Visible = false;
_Start(0);
}
public void _Start(int npc)
{
Visible = true;
dialogoIndice = 0;
actualNpc = npc;
Hablar();
}
public void Siguiente()
{
if(Textoanimado.IsRunning())
{
Textoanimado.Kill();
label.VisibleRatio = 1;
return;
}
if(diccionario.TryGetValue(actualNpc,out string[] arreglo))
{
if(dialogoIndice < arreglo.Length)
{
Hablar();
}
else
{
Visible = false;
}
}
}
string[] dialogo;
public override void _Input(InputEvent @event)
{
if(Input.IsActionJustPressed("Siguiente"))
{
Siguiente();
}
}
public void Hablar()
{
dialogo = diccionario[actualNpc]; //me da el arreglo de diccionario
label.Text = dialogo[dialogoIndice];
_Animaciontext();
dialogoIndice += 1;
}
public void _Animaciontext()
{
label.VisibleRatio = 0;
Textoanimado = CreateTween(); //ver funcion despues
float velocidad_Texto = 0.05f * label.Text.Length;
Textoanimado.TweenProperty(label,"visible_ratio",1,velocidad_Texto);
}
public void _on_button_pressed()
{
Siguiente();
}
}
Muchas gracias por el tuto !!!!, aca dejo en C# para el que lo quiera usar, [Godot 4.2]
Tremendo!!, gracias por tomarte el tiempo de dejar este gran aporte!
âĪ
gracias bro eres un god :)))))
no he terminado el vÃdeo, pero necesito agradecerte, he estado de tutorial en tutorial con los diÃĄlogos, pero ninguno me servÃa, hasta que encontrÃĐ tu vÃdeo y al fin me estÃĄ funcionando el cÃģdigo, mereces mÃĄs suscriptores!
me parecio super util, gracias por el esfuerzo! aunque digas q un robo de vida, jaja! los sprite de gatitos salvaron la situacion
Amborgeza ðĪĢð
ððą
hice un video explicando maquinas de estado de forma simple, pero prometo que en la proxima serie haremos cosas mas "avanzadas" y ahi si que me extendere con el tema :D
Lo del spawneo y drop de enemigos es una genial idea! , me lo anoto.
Genial, me hacÃa falta. A ver, si que me da toda la pereza lo de los temas, diÃĄlogos, etc.... pero es que un RPG vive de ellos. Pero si, me ha costado ver el vÃdeo centrado para entender bien y que no se me fuera la cabeza a otro sitio xDD Pero genial, me hacÃa falta! Muchas gracias!!
con el tema de que te ha costado, te refieres a lo denso del tema o a la edicion? o a ambas? ,admito que abuse del zoom esta vez XD
@@Kyme-Game-Studios el tema el tema, entre el anterior video y este, que los vi de una vez, se me hizo denso. Mucha informaciÃģn en un tema que me es mÃĄs pesado/dificil :P Y otra cosa, ya de paso. Estoy haciendo un diÃĄlogo, y consigo que funcione. El problema es que mi cÃĄmara sigue al personaje principal, por lo que claro, el diÃĄlogo queda en un sitio fijo. Estoy intentando mÃĐtodos para que se quede, por ejemplo, a 100px debajo del personaje, o intentando que aparezca en lo que se supone que es el centro de la cÃĄmara...vamos, que si me muevo, cuando toque al npc que tb se mueve, salga en una posiciÃģn fija relativa a la cÃĄmara....pero no lo doy conseguido ... Lo Último que he probado ha sido esto:
var camera_rect = get_canvas_transform().affine_inverse().basis_xform(get_viewport_rect().size)
$"../dialogos_npc".set_position(camera_rect)
Pero tampoco me funciona... la variable "camera_rect" me da el centro relativo de la cÃĄmara, pero igual cuando lo asigno al diÃĄlogo, este se posiciona en una posiciÃģn relativa al mundo...ni idea. Âŋalguna idea para que salga en una posiciÃģn fija relativa a la pantalla de juego visible? ...
OlvÃdalo..... soy tonto. Mientras te escribÃa lo anterior me dije Âŋy si almaceno la posiciÃģn del body que entra en el area2d y se lo asigno al diÃĄlogo? ...y listo! funcionÃģ!! Prefiero retocarlo porque queda descentrado y feo, pero por lo menos sale... lo que hice:
var player_pos = body.get_position()
$"../dialogos_npc".set_position(player_pos)
Muy buen contenido amigo , estarÃa genial si haces un video, state machine o spawn de enemigos con drop.
e aprendido mucho colega tenkiu ðððð
de nenkiu!!