jueves, 25 de abril de 2024

GDScript metodo de entrada de teclado, al presionar "W" rota un MeshInstance3D;

 extends MeshInstance3D


func _unhandled_input(event):

if event.pressed and event.keycode == KEY_W:


rotate_y(10.33)


#$AudioStreamPlayer3D.play()

# Called when the node enters the scene tree for the first time.

func _ready():

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):


pass

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

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

EXPLICACION: Otro script que en teoria es corrcto pero me crea un conflicto con el resto de nodos y escenas de mi juego....e de estudiar que pasa........ como se ve en la captura de pantalla las flechitas azules de la izquierda indican que esta correcto....!!!!


Posible sonido al presionar espacio, para un Area3d con godot 4.2, si no existen otros sonidos; GDScript;

 extends Area3D




# Called when the node enters the scene tree for the first time.

func _ready():

if Input.is_action_pressed("ui_accept"):

$"AudioStreamPlayer3D SUENANSUSPASOS".play()

if Input.is_action_just_released("ui_accept"):

$"AudioStreamPlayer3D SUENANSUSPASOS".play()

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):

#if Input.is_action_pressed("w"):


pass

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
EXPLICACION: el script es correcto, pero si hay otras areas 3d y el juego empieza a estar cargado de otros sonidos y elementos es posible que entre en conflicto con el resto de nodos y escenas, que es lo que me esta pasando ahora con un juego que empieza a ser amplio, de todas formas como me sale correcto lo pongo en el blog por si se quieren hacer pruebas,,,,,,Tiene que ser correcto porque a si lo marcan las flechitas azules
Tiene que ser correcto porque a si lo marcan las flechitas azules......

martes, 23 de abril de 2024

Script en 5 lineas hace animacion repetitiva en loop, para godot 4.2, en GDScript;

 extends Node3D



func _ready():

 

   $AnimationPlayer.play("CABREADA1") 


 

func _process(delta):

  

  pass

---------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------- EXPLICACION:
No tenia la animacion en LOOP y este sencillisimo script me lo soluciono.........

domingo, 21 de abril de 2024

Desde un Area3d Rota label3d constantemente y lo escala a mayor , borra SoftBody3, borra CollisionShape3D; GDScript Godot 4.2;

 extends Area3D



# Called when the node enters the scene tree for the first time.

func _ready():

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):

$Label3DDICEIMBECIL.rotate_y(delta * 1.9)

pass



func _on_area_entered(area):

var escala_actual = $Label3DDICEIMBECIL.scale

$Label3DDICEIMBECIL.scale = escala_actual * 18.0

var parent = get_parent()

var Turbo = parent.get_node("$SoftBody3Dvestido")

$SoftBody3Dvestido.queue_free()

$CollisionShape3Dquieroborrartambien.queue_free()

pass # Replace with function body.

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

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

Exlicacion: desde enlace muy buenos estos scripts...https://videojuegosenlineaasaco4.blogspot.com/2024/04/borrar-elementos-concretos-de-un-area3d_21.html

Borrar elementos concretos de un Area3D mediante scriptGDScript Godot 4.2; + poner un Label3d de texto que se amplia en esa colision;

 extends Area3D



# Called when the node enters the scene tree for the first time.

func _ready():

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):

pass



func _on_area_entered(area):

var escala_actual = $Label3DDICEIMBECIL.scale

$Label3DDICEIMBECIL.scale = escala_actual * 2.0

var parent = get_parent()

var Turbo = parent.get_node("$SoftBody3Dvestido")

$SoftBody3Dvestido.queue_free()

$CollisionShape3Dquieroborrartambien.queue_free()

pass # Replace with function body.


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

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

EXPLICACION Y CAPTURA DE PANTALLA:

Tengo un personaje en Godot3d 4.2 al que por colision quiero borrarle el vestido, en el script me encontre con fallos que provocaban que el juego se bloquease, cuando el player tocaba  al personaje le borraba el vestido y funcionaba bien, pero cuando lo volvia a tocar se bloqueaba el juego porque ....no borraba tambien el CollisionShape3Dquieroborrartambien que producia la orden de borrar el vestido, entonces entendi que al volver a tocar ese CollisionShape3Dquieroborrartambien que en el script mandaba borrar el SoftBody3Dvestido y el programa al correr veia que no existia ese elemento a borrar porque ya se hizo anteriormente, se contradecia y se paraba ,bloqueaba el juego, SOLUCION.......borrar tambien al colisionar, tocar,  ese CollisionShape3Dquieroborrartambien y asi e conseguido solucionar ese bloqueo del juego, e tenido que pensar y razonar y me cuesta mucho la verdad, se me da muy mal programar, pero no me queda otra, si no imposible desarrollar con Godot 4.2

Hemos ampliado el script con nuebo elemento un label3d que pone un texto en 3d, lo escala en esa colision y en el script e señalado las dos lineas nuevas de verde todo funciona perfectamente...







Borrar elementos concretos de un Area3D mediante scriptGDScript Godot 4.2;

 extends Area3D



# Called when the node enters the scene tree for the first time.

func _ready():

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):

pass



func _on_area_entered(area):

var parent = get_parent()

var Turbo = parent.get_node("$SoftBody3Dvestido")

$SoftBody3Dvestido.queue_free()

$CollisionShape3Dquieroborrartambien.queue_free()

pass # Replace with function body.

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

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

EXPLICACION Y CAPTURA DE PANTALLA:

Tengo un personaje en Godot3d 4.2 al que por colision quiero borrarle el vestido, en el script me encontre con fallos que provocaban que el juego se bloquease, cuando el player tocaba  al personaje le borraba el vestido y funcionaba bien, pero cuando lo volvia a tocar se bloqueaba el juego porque ....no borraba tambien el CollisionShape3Dquieroborrartambien que producia la orden de borrar el vestido, entonces entendi que al volver a tocar ese CollisionShape3Dquieroborrartambien que en el script mandaba borrar el SoftBody3Dvestido y el programa al correr veia que no existia ese elemento a borrar porque ya se hizo anteriormente, se contradecia y se paraba ,bloqueaba el juego, SOLUCION.......borrar tambien al colisionar, tocar,  ese CollisionShape3Dquieroborrartambien y asi e conseguido solucionar ese bloqueo del juego, e tenido que pensar y razonar y me cuesta mucho la verdad, se me da muy mal programar, pero no me queda otra, si no imposible desarrollar con Godot 4.2



miércoles, 17 de abril de 2024

Script para animar humanoide y rotarlo a si mismo desde un nodo3d para godot 4.2;

 extends Node3D



# Called when the node enters the scene tree for the first time.

func _ready():

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):

rotate_y(0.1)

$AnimationPlayer.play("LAENFADA")

pass