domingo, 3 de diciembre de 2023

Como hacer un fogonazo de arma en Godot 3d;

 extends MeshInstance3D

func _input(event):

if event.is_action_pressed("ui_accept"):

$AnimationPlayer.play("fogonazo")





Para aumentar la velocidad de una animación en Godot, puedes seguir los siguientes pasos:

  1. Abre el editor de animaciones y selecciona la animación que deseas acelerar.
  2. En la sección de Playback, ajusta el valor de Speed Scale a un valor mayor que 1. Por ejemplo, si deseas que la animación se reproduzca al doble de velocidad, establece el valor en 2.
  3. Guarda los cambios y reproduce la animación para verificar que se está reproduciendo a la velocidad deseada.

Script para animar un objeto que hace de proyectil, en Godot3d con Gdscript, este script activa una animacion previamente echa;





 Script para animar un objeto que hace de proyectil, en Godot3d  con Gdscript, este script activa una animacion previamente echa;


script muy simple y completo, como funciona?

primero hay que poner el escript en el CSGSphere3D2cinanimacion este tiene de hijo la animacion

AnimationPlayer aqui hemos creado una amimacion llamada "animarparaes"

la animacion esta echa manualmente y hay que jugar con el tema de loop repetitivo y parar animacion de forma que solo se realice una sola animacion al presionar la tecla espacio, sorprendentemente me funciona, y puedo hacer proyectiles que disparan sin tener que instanciar nada, ahora es cuestion de ir practicando el tema dandole masdistancia ala animacion del disparo y jugando con las velocidares,

CSGSphere3D2cinanimacion es el proyectil, este a su vez es hijo de un RigidBody3D2CUBOLOCO

que tiene su propio script para moverlo por la escena puede volar y correr por el escenario, cuando manejo este RigidBody3D2CUBOLOCO por el escenario y presiono la tecla "espacio" activo la nimacion del proyectil con nombre archibo CSGSphere3D2cinanimacion que me acompaña constantemente por ser hijo y e conseguido un vehiculo que tiene un proyectil que se dispara al presionar la tecla "espacio"

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

extends CSGSphere3D

func _input(event):

if event.is_action_pressed("ui_accept"):

$AnimationPlayer.play("animarparaes")

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

el script de debajo funciona mismo sistema pero en un cubo no en una esfera, para probar abrir puertas


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

extends CSGBox3D

func _input(event):


if event.is_action_pressed("ui_accept"):


$AnimationPlayer.play("ABRE")


jueves, 30 de noviembre de 2023

Script para Godot al presionar tecla "espacio" mueve un cilindro a un lado y al soltar "espacio" mueve al lado contrario;

 extends RigidBody3D


var scale_speed = 0.1


func _process(delta):

if Input.is_action_pressed("ui_accept"):

translate(Vector3(0.15,0,0))

pass


if Input.is_action_just_released("ui_accept"):  

translate(Vector3(-11.15,0,0))

pass

miércoles, 29 de noviembre de 2023

Ejemplo de escalar RigidBody3D con Godot con script Gd , sacado de la IA del navegador Microsoft Edge;

Realmente, el uso de la IA que esta de moda y se va desarrollando ferozmente tiene muchisima utilidad para aprender a programar, empezando con scripts sencillos y probandolos en godot , variando los ejes y las cantidades y mezclando.....me esta sorprendiendo e intusiasmando....



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

ejemplo-1

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


 extends RigidBody3D

# Escala el objeto en un 10% cada segundo solo en el eje X

func _process(delta):

scale.y *= 3.1


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

ejemplo-2

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



extends RigidBody3D

# Escala el objeto en un 10% cada segundo solo en el eje X

func _process(delta):

scale.x *= 3.1


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

ejemplo-3

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



extends RigidBody3D

# Escala el objeto en un 10% cada segundo

func _process(delta):

scale *= 1.1



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

ejemplo-4  PERO AL PRESIONAR TECLA ESPACIO

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





extends RigidBody3D

var scale_speed = 0.1

func _process(delta):
    if Input.is_action_pressed("ui_accept"):
        scale += Vector3(scale_speed, scale_speed, scale_speed)





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

ejemplo-4  PERO AL SOLTAR TECLA ESPACIO

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





extends RigidBody3D

var scale_speed = 0.1

func _process(delta):
    if Input.is_action_just_released("ui_accept"):
        scale += Vector3(scale_speed, scale_speed, scale_speed)



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

ejemplo-4  PERO AL presionar tecla"g"

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



extends RigidBody3D

var scale_speed = 0.1

func _input(event):
    if event.is_action_pressed("g"):
        scale *= (1 + scale_speed)




domingo, 26 de noviembre de 2023

Como hacer un proyectil con Godot y sript GD con caracteristicas particulares y sin instanciar;

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

Este script sirve para girar un proyectil y para lanzarlo y recogerlo.....es un tema del que estoy muy limitado ...

pero que e de seguir estudiando haber si consigo algo util para algun juego de tema disparos colisiones e impactos...

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


extends CSGSphere3D



func _unhandled_input(event):


if event is InputEventKey:


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


rotate_x(0.33)               

pass




if event is InputEventKey:


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


rotate_x(10.33)               

pass





if event is InputEventKey:

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

translate(Vector3(0,-3.15,0))

pass





if event is InputEventKey:

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

translate(Vector3(0,3.15,0))

pass




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

una nueva  variante del script que tiene sonido al disparar y se puede dirigir la direccion del disparo

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





extends CSGSphere3D



func _unhandled_input(event):


if event is InputEventKey:


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


rotate_x(0.11)               

pass




if event is InputEventKey:


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


rotate_y(0.11)               

pass





if event is InputEventKey:

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

translate(Vector3(0,-0.25,0))

$AudioStreamPlayer.play()

pass





if event is InputEventKey:

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


translate(Vector3(0,0.25,0))

$AudioStreamPlayer.play()

pass



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

mas mejoras del del mismo script

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

extends CSGSphere3D



func _unhandled_input(event):


if event is InputEventKey:


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


rotate_x(0.11)               

pass




if event is InputEventKey:


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


rotate_y(0.11)               

pass




if event is InputEventKey:

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

translate(Vector3(0,-0.25,0))

$AudioStreamPlayer.play()

pass





if event is InputEventKey:

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


translate(Vector3(0,0.25,0))

$AudioStreamPlayer.play()

pass


if event is InputEventKey:

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


rotate_y(-0.11)               

pass



if event is InputEventKey:

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


rotate_x(-0.11)               

pass






jueves, 23 de noviembre de 2023

Scripts para Godot en Gd para hacer efecto de volar;






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

para girar la elice

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

 extends MeshInstance3D


func _unhandled_input(event):

if event is InputEventKey:

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

rotate_y(0.88)

$AudioStreamPlayer3D.play()





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

rotate_y(0.33)

$AudioStreamPlayer3D.play()



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

rotate_y(0.44)

$AudioStreamPlayer3D.play()

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

rotate_y(0.41)

$AudioStreamPlayer3D.play()


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

rotate_y(0.48)

$AudioStreamPlayer3D.play()



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

rotate_y(0.33)

$AudioStreamPlayer3D.play()

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

rotate_y(0.33)

$AudioStreamPlayer3D.play()


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

rotate_y(0.33)

$AudioStreamPlayer3D.play()

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

rotate_y(0.33)

$AudioStreamPlayer3D.play()










---------------------------------------------------------------------------------------------------------
para mover y elevar el aparato
-----------------------------------------------------------------------------------------------------








extends RigidBody3D



func _unhandled_input(event):
#if event is InputEventKey:
#if event.pressed and event.keycode == KEY_O:
if event is InputEventKey and event.pressed:
if event.keycode == KEY_J:
#queue_free()
translate(Vector3(1,0,0))
$AudioStreamPlayer.play()
pass

if event is InputEventKey and event.pressed:
if event.keycode == KEY_L:
 
#queue_free()
translate(Vector3(-1,0,0))
$AudioStreamPlayer.play()
pass
 
if event is InputEventKey and event.pressed:
if event.keycode == KEY_I:
#queue_free()
translate(Vector3(0,0,1))
$AudioStreamPlayer.play()
pass


 
if event is InputEventKey and event.pressed:
if event.keycode == KEY_K:
 
#queue_free()
translate(Vector3(0,0,-1))
$AudioStreamPlayer.play()
pass

if event is InputEventKey and event.pressed:
if event.keycode == KEY_Z:
#queue_free()
translate(Vector3(0,1,0))
pass
 
if event is InputEventKey and event.pressed:
if event.keycode == KEY_R:
 
#queue_free()
translate(Vector3(0,2,0))
pass 
if event is InputEventKey and event.pressed:
if event.keycode == KEY_O:
 
#queue_free()
rotate_y(0.04)
pass 
if event is InputEventKey and event.pressed:
if event.keycode == KEY_P:
 
#queue_free()
rotate_y(-0.04)
pass 
if event.keycode == KEY_9:
add_constant_force(Vector3(0,-33,0))
pass
if event.keycode == KEY_8:
add_constant_force(Vector3(0,33,0))
pass
if event.keycode == KEY_7:
apply_torque_impulse(Vector3(0,-10,0))
pass
if event.keycode == KEY_6: 

apply_impulse(Vector3(0,210,0))
pass
if event.keycode == KEY_W: 

apply_impulse(Vector3(0,0,40))
pass
if event.keycode == KEY_S: 
apply_impulse(Vector3(0,0,-40))
pass
if event.keycode == KEY_A: 
apply_impulse(Vector3(40,0,0))
pass
if event.keycode == KEY_D: 
apply_impulse(Vector3(-40,0,0))
pass
if event.keycode == KEY_1:
rotate_z(1)
pass
if event.keycode == KEY_2:
rotate_x(1)
pass