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.

martes, 20 de febrero de 2024

Estudio de colision y de cambio de cubo en una esfera con Godot4.2 3dimensiones;

 extends Area3D


var cubo_prefab = preload("res://cubo.tscn")  # Prefab del cubo

var esfera_prefab = preload("res://esfera.tscn")  # Prefab de la esfera


func _ready():

pass


func _on_area_entered(area):

# Reemplazar el cubo con una esfera

var cubo = get_node("Cubo")

cubo.queue_free()

var esfera = esfera_prefab.instantiate()

esfera.set_transform(cubo.get_transform())

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

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

EXPLICACION: Tengo dificultades con los enemigos cuando les disparo y ago el cambio a fallecido, cambiando al personaje, funciona bien , pero si buelbe a pasar el proyectil en el motor de juegos se bloquea el juego , cuando lo compilo para windows con el .exe ejecutable no se bloquea pero se repite el personaje fallecido y se superpone uno encima del otro a cada nuevo disparo...asi que e de empezar con algo simple como este script que me proporciono la IA ....no lo e probado aun no se si funciona y e de saber aplicarlo tambien, si funciona partiendo de esa base haber si soluciono mi error.......

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

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

otro ejemplo a estudiar tambien

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

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

extends Node


var cubo = get_parent()


func _ready():

pass


func _on_area_entered(area):

# Reemplazar el cubo con una esfera

cubo.queue_free()

var esfera = esfera_prefab.instantiate()

esfera.set_transform(cubo.get_transform())



JUEGOS MIOS, MIRA JUEGA COMPRA O JUEGA GRATIS TAMBIEN;

 JUEGOS MIOS, MIRA JUEGA COMPRA O JUEGA GRATIS TAMBIENcliquea aqui y accede en este enlace azul

Promocionando un juego que me lo trabaje un monton cuando usaba Unity; venga comprar algo alguien¡¡¡¡;

 

lunes, 19 de febrero de 2024

Adelantos con godot ideas de trabajarlo, colisiones y enemigos y hacer un campo de hierva;

 Tengo unos 3 meses y pico de practicas y estudios con Godot4.2 y se me a ocurrido una manera de suplir carencias, como los colisionadores que no adaptan la forma de una rosca, consultando a la IA, me dio la idea de rellenar una rosca con coliders colisionadores, de cubos o esferas que esten dentro de una rosca esta a su vez cubre a un personaje, un enemigo por ejemplo, entonces puedo hacer dos roscas con sus respectivos colisionadores en su interior que al tener un contacto consiga 1ª instanciar un enemigo, el mismo pero por ejemplo muriendo y 2ª que la otra rosca con sus respectivos colisionadores borren al enemigo original..es unas idea que aun no e puesto en practica y que trabajare estos siguientes dias, en parte ya lo e echo, pero con paredes que cubren al enemigo, 4 en concreto, pero hay fallos si los impactos son ladeados, con una rosca pienso es mas definido el efecto que quiero hacer.......


y para hacer hiervas en el suelo muy facil con gimp y partiendo de una plano trasparente y formato PNG que es el que soporta transparencias, hacer una escena y copias de esta e ir haciendo duplicados y emparentando los archivos de imagen PNG.......

Luce chulo, y esta echo en un pis pas¡¡¡¡¡¡




domingo, 18 de febrero de 2024

Animar con Godot4.2 3d y GDScript 3 animaciones con teclas flechas del pc;

 extends Node3D




var animacion_actual = "Game_engineAction"




func _physics_process(delta):


# Agacharse


if Input.is_action_pressed("ui_down"):


if animacion_actual != "SEAGACHA_001":


$AnimationPlayer.play("SEAGACHA_001")


animacion_actual = "SEAGACHA_001"




# Acción del motor del juego


elif Input.is_action_pressed("ui_up"):


if animacion_actual != "Game_engineAction":


$AnimationPlayer.play("Game_engineAction")


animacion_actual = "Game_engineAction"




# Saltar


elif Input.is_action_pressed("ui_accept"):


if animacion_actual != "Game_engineAction":


$AnimationPlayer.play("Game_engineActionr")


animacion_actual = "Game_engineAction"




# Moverse hacia la izquierda


elif Input.is_action_pressed("ui_left"):


if animacion_actual != "cabezaalnteatras":


$AnimationPlayer.play("cabezaalnteatras")


animacion_actual = "cabezaalnteatras"




# Moverse hacia la derecha


elif Input.is_action_pressed("ui_right"):


if animacion_actual != "Esconder accion]_001":


$AnimationPlayer.play("Esconder accion]_001")


animacion_actual = "Esconder accion]_001"

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

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

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

EXPLICACION: desde blender grabo animaciones y por script en godot logro que funcionen perfectamente, aremos de hijo de un player estos adelantos y poder movernos y animarnos con diversos tipos de movimientos y acciones---------trabajo de chinos hay vamos-----------

viernes, 16 de febrero de 2024

Animar por teclado en godot4.2 un ejemplo;

 extends Node3D


var animacion_actual = "Game_engineAction"


func _physics_process(delta):

    # Agacharse

    if Input.is_action_pressed("ui_down"):

        if animacion_actual != "SEAGACHA":

            $AnimationPlayer.play("SEAGACHA")

            animacion_actual = "SEAGACHA"


    # Acción del motor del juego

    elif Input.is_action_pressed("ui_up"):

        if animacion_actual != "Game_engineAction":

            $AnimationPlayer.play("Game_engineAction")

            animacion_actual = "Game_engineAction"


    # 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 != "MoverIzquierda":

            $AnimationPlayer.play("MoverIzquierda")

            animacion_actual = "MoverIzquierda"


    # Moverse hacia la derecha

    elif Input.is_action_pressed("ui_right"):

        if animacion_actual != "MoverDerecha":

            $AnimationPlayer.play("MoverDerecha")

            animacion_actual = "MoverDerecha"