jueves, 29 de febrero de 2024

GDScript para Godot4.2 3d animacion elavorada con explicacion del GDScript;

 extends Node3D


var animacion_actual = "ANDAR"


func _ready():


pass # Replace with function body.



func _input(event):


if event is InputEventMouseButton:


if event.button_index == 1:


#if animacion_actual != "CHISPA":


$AnimationPlayer.play("CHISPA")


animacion_actual = "CHISPA"


# Acción del motor del juego


#elif Input.is_action_pressed("ui_up"):

if event is InputEventMouseButton:


if event.button_index == 2:


#if animacion_actual != "ANDAR":


$AnimationPlayer.play("ANDAR")


animacion_actual = "ANDAR"


# Saltar


elif Input.is_action_pressed("ui_accept"):


if animacion_actual != "SALTAR":


$AnimationPlayer.play("SALTAR")


animacion_actual = "SALTAR"


# Moverse hacia la izquierda


elif Input.is_action_pressed("ui_left"):


if animacion_actual != "ANDAR":


$AnimationPlayer.play("ANDAR")


animacion_actual = "ANDAR"


# Moverse hacia la derecha


elif Input.is_action_pressed("ui_right"):


if animacion_actual != "ANDAR":


$AnimationPlayer.play("ANDAR")


animacion_actual = "ANDAR"


# Animación "BALANCE" en bucle


else:


# Comprueba si la animación actual no es "BALANCE" o si no se está reproduciendo ninguna animación

if animacion_actual != "BALANCE" or not $AnimationPlayer.is_playing():


$AnimationPlayer.play("BALANCE")


animacion_actual = "BALANCE"

------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------

EXPLICACION:

resuelto, player que tiene un movi miento continuo, y que si presiono boton izquierdo del raton ,cambia su animacion , si presiono boton derecho del raton cambia a otra animacion y tambien cambia animaciones presionando teclas flechas...(junto teclado numerico)


script GDScript para generar movimientos de un personaje con el mouse botones y con teclas flechas;

 extends Node3D


var animacion_actual = "ANDAR"


func _ready():


pass # Replace with function body.



func _input(event):


if event is InputEventMouseButton:


if event.button_index == 1:


#if animacion_actual != "CHISPA":


$AnimationPlayer.play("CHISPA")


animacion_actual = "CHISPA"


# Acción del motor del juego


elif Input.is_action_pressed("ui_up"):


if animacion_actual != "ANDAR":


$AnimationPlayer.play("ANDAR")


animacion_actual = "ANDAR"


# Saltar


elif Input.is_action_pressed("ui_accept"):


if animacion_actual != "SALTAR":


$AnimationPlayer.play("SALTAR")


animacion_actual = "SALTAR"


# Moverse hacia la izquierda


elif Input.is_action_pressed("ui_left"):


if animacion_actual != "ANDAR":


$AnimationPlayer.play("ANDAR")


animacion_actual = "ANDAR"


# Moverse hacia la derecha


elif Input.is_action_pressed("ui_right"):


if animacion_actual != "ANDAR":


$AnimationPlayer.play("ANDAR")


animacion_actual = "ANDAR"


# Animación "BALANCE" en bucle


else:


# Comprueba si la animación actual no es "BALANCE" o si no se está reproduciendo ninguna animación

if animacion_actual != "BALANCE" or not $AnimationPlayer.is_playing():


$AnimationPlayer.play("BALANCE")


animacion_actual = "BALANCE"


-----------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------------

EXPLICACION:

con este script consigo que el personaje player tenga una animacion continua, y que al presionar teclas de las flechas, (al lado teclado numerico) cambie su movimiento y ademas consegui que al presionar boton del raton aga otro movimiento, quiero hacer como un mago que al mover el brazo de diferentes formas aga algun efecto que ire preparando..........


miércoles, 28 de febrero de 2024

Nuevo script para Godot4.2 para animar un personaje que sin presionar tecla ya tiene una animacion en bucle;

extends Node3D


var animacion_actual = "ANDAR"


func _physics_process(delta):


    # Agacharse


    if Input.is_action_pressed("ui_down"):


        if animacion_actual != "CHISPA":


            $AnimationPlayer.play("CHISPA")


            animacion_actual = "CHISPA"


    # Acción del motor del juego


    elif Input.is_action_pressed("ui_up"):


        if animacion_actual != "ANDAR":


            $AnimationPlayer.play("ANDAR")


            animacion_actual = "ANDAR"


    # Saltar


    elif Input.is_action_pressed("ui_accept"):


        if animacion_actual != "SALTAR":


            $AnimationPlayer.play("SALTAR")


            animacion_actual = "SALTAR"


    # Moverse hacia la izquierda


    elif Input.is_action_pressed("ui_left"):


        if animacion_actual != "ANDAR":


            $AnimationPlayer.play("ANDAR")


            animacion_actual = "ANDAR"


    # Moverse hacia la derecha


    elif Input.is_action_pressed("ui_right"):


        if animacion_actual != "ANDAR":


            $AnimationPlayer.play("ANDAR")


            animacion_actual = "ANDAR"


    # Animación "BALANCE" en bucle


    else:


        # Comprueba si la animación actual no es "BALANCE" o si no se está reproduciendo ninguna animación

        if animacion_actual != "BALANCE" or not $AnimationPlayer.is_playing():


            $AnimationPlayer.play("BALANCE")


            animacion_actual = "BALANCE"


---------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------

EXPLICACION : UN PERSONAJE PLAYER QUE AL PRESIONAR TECLAS FLECHAS AGA 2 MOVIMIENTOS DIFERENTES, PERO QUE SIN PRESIONAR NADA YA TENGA UN MOVIMIENTO EN BUCLE, 

martes, 27 de febrero de 2024

viva itch.io;

 






juego de exploracion en godot teclas w-a-s-d mouse botones  espacio, teclas flechas y m para reiniciar, explora y dispara y descubre mujeres , es un prototipo del que abuse en tema de memoria, pero en fin es gratuito, si alguien quiere poner algun donativo bien benido.............

lunes, 26 de febrero de 2024

SOBRE GODOT 4.2 OPINION EN TEMA DE MEMORIA Y RECURSOS;

 En unos 3 meses de aprender y probar godot4.2 y consiguiendo programar cosas esenciales, 

instanciar objetos, rotarlos, moverlos, animar, borrar, comprender un poco las señales y los scripts gdscript, conseguir algo en efectos de particulas y efectos de tela y ropa....

.ahora me encuentro que la memoria es mas complicada de equilibrar  que usando Unity,

 de todas formas espero que usando inteligentemente el tema de "instanciar" y "lod" podre hacer juegos fluidos...

mirare de ir trabajando por habitaciones o sectores y que por ejemplo un personaje al estar en una habitacion al pasar por una de sus puertas instanciando carge un nuevo escenario y borre completamente el anterior para hacer como una especie de niveles......

.Estoy con buenos logros, pero ahora me falta, como diria, velocidad desarrollando por lo novedoso que es para mi Godot4.2  con Unity estuve unos 10 años aprendiendo y usando y lo tenia mas de la mano, y con Godot 4.2 llevo unos 3 meses, asi que no me rindo me encanta Godot y seguire con Godot.

domingo, 25 de febrero de 2024

Nueva forma de rotar un extends MeshInstance3D con Godot4.2;

 extends MeshInstance3D



# Velocidad de rotación (grados por segundo)

var rotation_speed = 290.0  # Ajusta el valor para cambiar la velocidad


# Función llamada al entrar el nodo en la escena

func _ready():

pass


# Función llamada cada fotograma

func _physics_process(delta):

# Calcular la rotación en base al delta y la velocidad

var angle = delta * rotation_speed

# Aplicar la rotación al eje Y del nodo

rotation.y += angle



----------------------------------------------------------------------------------------------------------

otro ejemplo 

-----------------------------------------------------------------------------------------------------------

extends SoftBody3D


# Velocidad de rotación (grados por segundo)

var rotation_speed = 0.0  # Ajusta el valor para cambiar la velocidad


# Función llamada al entrar el nodo en la escena

func _ready():

pass


# Función llamada cada fotograma

func _physics_process(delta):

# Calcular la rotación en base al delta y la velocidad

var angle = delta * rotation_speed

# Aplicar la rotación al eje Y del nodo

rotation.y += angle

miércoles, 21 de febrero de 2024

destruir por colision un cubo e instanciar en su lugar una esfera con godot4.2;

 extends Area3D

var Esferauno = preload("res://GRAFICOS/ESTUDIO DE ROSCAS CON PERSONAJE/esferauno.tscn")


func _ready():

# Replace with function body.

pass


func _process(delta):

# Replace with function body.

pass





func _on_area_entered(area):

var parent = get_parent()


var cubouno = parent.get_node("cubouno")

 


get_node("cubouno").queue_free()

pass # Replace with function body.



func _on_area_exited(area):

var Esferauno = Esferauno.instantiate()


add_child(Esferauno)

pass # Replace with function body.

-----------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------

ESTE SCRIPT ES PERFECTO. EXPLICACION:

EN REALIDAD SOLO ES EL ORDEN DE LOS GRAFICOS EN LA ESCENA.......PARTIENDO DEL NODO RAIZ QUE ES UN WorldEnvironment EN MI JUEGO SALE DESDE EL WorldEnvironment UN HIJO QUE ES UNA AREA3D Y DE ESA AREA3D SALE  EL COLISIONSHAPE3D DE HIJO DEL AREA 3D Y DE HIJO DEL COLISIONSHAPE3D SALE EL CUBO QUE ES DE TIPO CGSBOX3D, ,,, LA ESFERA ES UNA ESCENA NUEVA QUE ESTA EN LA CARPETA 

"res://GRAFICOS/ESTUDIO DE ROSCAS CON PERSONAJE/esferauno.tscn"


-------------------------------------------------------------------

EL SCRIPT ESTE ES PERFECTO..........EL DE AVAJO ...EL PRIMERO EL DE ARRIBA NO FUNCIONA PERFECTO SE BLOQUEA DESDE EL MOTOR DE JUEGOS GODOT4.2 CUANDO SE BUELVE A REPETIR EL DISPARO......

-------------------------------------------------------------------



extends Area3D
var Esferauno = preload("res://GRAFICOS/ESTUDIO DE ROSCAS CON PERSONAJE/esferauno.tscn")

func _ready():
# Replace with function body.
pass

func _process(delta):
# Replace with function body.
pass




func _on_area_entered(area):
var parent = get_parent()

var CollisionShape3Dcubo = parent.get_node("CollisionShape3Dcubo")
 

get_node("CollisionShape3Dcubo").queue_free()
pass # Replace with function body.


func _on_area_exited(area):
var Esferauno = Esferauno.instantiate()

add_child(Esferauno)
pass # Replace with function body.