domingo, 8 de diciembre de 2024

Pegar un objeto a un hueso con blender; muy facil; Control +P;

 

Contol+P , 

-1 añadir vacio.

-2 añadir objeto.

-3 fusionar vacio y objeto con Control +P

-4 seleccionar el hueso de la mano y el vacio y fusionarlos con Control+P en modo Hueso.

Observar el video y practicar, muy util para pasarlo luego a motores de juegos, tipo Godot.

(musica de fondo pertenece a:https://creativecommons.org/licenses/...)


viernes, 6 de diciembre de 2024

THE ELEVATOR OF TERROR;

 


















GDScript para un CharacterBody3D; personaje que manejamos en 1ª persona; a 360 grados y a 90 grados dos ejemplos;

extends CharacterBody3D


var rotation_angle = 90.0  # Ángulo de rotación actual

var rotate_speed = 2.0  # Velocidad de rotación reducida para un giro más suave


const SPEED = 0.2  # Velocidad de movimiento

const JUMP_VELOCITY = 4.5  # Velocidad de salto


var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")


func _physics_process(delta):

    # Movimiento vertical (salto)

    if not is_on_floor():

        velocity.y -= gravity * delta


    if Input.is_action_just_pressed("ui_accept") and is_on_floor():

        velocity.y = JUMP_VELOCITY


    # Movimiento horizontal (basado en la entrada)

    var input_dir = Input.get_vector("ui_left", "ui_right", "andaradelante", "detenerse")

    var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()


    if direction:

        velocity.x = direction.x * SPEED

        velocity.z = direction.z * SPEED

    else:

        velocity.x = move_toward(velocity.x, 0, SPEED)

        velocity.z = move_toward(velocity.z, 0, SPEED)


    # Aplicar movimiento y rotación

    move_and_slide()


    # Rotación (limitada a 90 grados y más lenta)

    var rotation_delta = 0.0

    if Input.is_action_pressed("move_left"):

        rotation_delta = rotate_speed * delta  # Invertimos la dirección

    elif Input.is_action_pressed("move_right"):

        rotation_delta = -rotate_speed * delta  # Invertimos la dirección


    # Limitamos el giro a 90 grados en ambas direcciones

    rotation_angle = clamp(rotation_angle + rotation_delta, -PI / 2, PI / 2)

    rotate_y(rotation_delta)


    # Movimiento basado en "andaradelante" (opcional)

    if Input.is_action_pressed("andaradelante"):

        translate(Vector3(0, 0, -0.009))


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

mismo script pero limitado a 90 grados de giro., el de arriba gira 360 grados

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

extends CharacterBody3D


var rotation_angle = 0.0  # Ángulo de rotación actual

var rotate_speed = 3.1     # Velocidad de rotación


const SPEED = 0.1          # Velocidad de movimiento

const JUMP_VELOCITY = 4.0   # Velocidad de salto


var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")


func _ready():

pass


func _physics_process(delta):

# Movimiento vertical (saltar)

if not is_on_floor():

velocity.y -= gravity * delta


if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y = JUMP_VELOCITY


# Movimiento horizontal (basado en input)

var input_dir = Input.get_vector("ui_left", "ui_right", "andaradelante", "detenerse")

var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()


if direction:

velocity.x = direction.x * SPEED

velocity.z = direction.z * SPEED

else:

velocity.x = move_toward(velocity.x, 0, SPEED)

velocity.z = move_toward(velocity.z, 0, SPEED)


move_and_slide()


# Rotación (limitada a 60 grados)

if Input.is_action_pressed("move_left"):

if rotation_angle > -PI / 3:  # -60 grados en radianes

rotation_angle -= rotate_speed * delta

rotate_y(rotate_speed * delta)


if Input.is_action_pressed("move_right"):

if rotation_angle < PI / 3:  # 60 grados en radianes

rotation_angle += rotate_speed * delta

rotate_y(-rotate_speed * delta)

 

# Detener movimiento (opcional)

if Input.is_action_pressed("andaradelante"):

#if Input.is_action_pressed("detenerse"):

velocity.x = 0

velocity.z = 0

rotate_y(0)  # Opcional, para detener la rotación también

translate(Vector3(0, 0, -0.009))




#if Input.is_action_pressed("andaradelante"):

if Input.is_action_pressed("detenerse"):

velocity.x = 0

velocity.z = 0

rotate_y(0)  # Opcional, para detener la rotación también

translate(Vector3(0, 0, 0.009))

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

OTRO EJEMPLO SOLO GIRA 90 GRADOS NO ABANZA NI RETROCEDE

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


extends CharacterBody3D


var rotation_angle = 0.0  # Ángulo de rotación actual

var rotate_speed = 3.1     # Velocidad de rotación


const SPEED = 0.1          # Velocidad de movimiento

const JUMP_VELOCITY = 4.0   # Velocidad de salto


var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")


func _ready():

pass


func _physics_process(delta):

# Movimiento vertical (saltar)

if not is_on_floor():

velocity.y -= gravity * delta


if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y = JUMP_VELOCITY


# Movimiento horizontal (basado en input)

var input_dir = Input.get_vector("ui_left", "ui_right", "andaradelante", "detenerse")

var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()


if direction:

velocity.x = direction.x * SPEED

velocity.z = direction.z * SPEED

else:

velocity.x = move_toward(velocity.x, 0, SPEED)

velocity.z = move_toward(velocity.z, 0, SPEED)


move_and_slide()


# Rotación (limitada a 60 grados)

if Input.is_action_pressed("move_left"):

if rotation_angle > -PI / 3:  # -60 grados en radianes

rotation_angle -= rotate_speed * delta

rotate_y(rotate_speed * delta)


if Input.is_action_pressed("move_right"):

if rotation_angle < PI / 3:  # 60 grados en radianes

rotation_angle += rotate_speed * delta

rotate_y(-rotate_speed * delta)


# Detener movimiento (opcional)

if Input.is_action_pressed("detenerse"):

velocity.x = 0

velocity.z = 0

rotate_y(0)  # Opcional, para detener la rotación también


# Movimiento continuo (opcional)

# Puedes reemplazar estas líneas con el movimiento deseado

# translate(Vector3(0, 0, -0.01))  # Movimiento continuo hacia adelante


jueves, 5 de diciembre de 2024

Un CharacterBody3D, limito su giro a 60 grados, para que no dispare a su espalda que me rompe la idea de juego;

 extends CharacterBody3D


var rotation_angle = 0.0  # Ángulo de rotación actual

var rotate_speed = 3.1     # Velocidad de rotación


const SPEED = 0.1          # Velocidad de movimiento

const JUMP_VELOCITY = 4.0   # Velocidad de salto


var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")


func _ready():

pass


func _physics_process(delta):

# Movimiento vertical (saltar)

if not is_on_floor():

velocity.y -= gravity * delta


if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y = JUMP_VELOCITY


# Movimiento horizontal (basado en input)

var input_dir = Input.get_vector("ui_left", "ui_right", "andaradelante", "detenerse")

var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()


if direction:

velocity.x = direction.x * SPEED

velocity.z = direction.z * SPEED

else:

velocity.x = move_toward(velocity.x, 0, SPEED)

velocity.z = move_toward(velocity.z, 0, SPEED)


move_and_slide()


# Rotación (limitada a 60 grados)

if Input.is_action_pressed("move_left"):

if rotation_angle > -PI / 3:  # -60 grados en radianes

rotation_angle -= rotate_speed * delta

rotate_y(rotate_speed * delta)


if Input.is_action_pressed("move_right"):

if rotation_angle < PI / 3:  # 60 grados en radianes

rotation_angle += rotate_speed * delta

rotate_y(-rotate_speed * delta)


# Detener movimiento (opcional)

if Input.is_action_pressed("detenerse"):

velocity.x = 0

velocity.z = 0

rotate_y(0)  # Opcional, para detener la rotación también


# Movimiento continuo (opcional)

# Puedes reemplazar estas líneas con el movimiento deseado

# translate(Vector3(0, 0, -0.01))  # Movimiento continuo hacia adelante




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

NUEVA COMBINACION A 60 GRADOS CADA VEZ QUE SE PRESIONA TECLA

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


extends CharacterBody3D


var rotation_angle = 0.0  # Current rotation angle

var rotate_speed = 10.0  # Rotation speed (adjust as needed)


const SPEED = 0.2        # Movement speed

const JUMP_VELOCITY = 4.5 # Jump velocity


var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")


func _physics_process(delta):

# Vertical movement (jumping)

if not is_on_floor():

velocity.y -= gravity * delta


if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y = JUMP_VELOCITY


# Horizontal movement (based on input)

var input_dir = Input.get_vector("ui_left", "ui_right", "andaradelante", "detenerse")

var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()


if direction:

velocity.x = direction.x * SPEED

velocity.z = direction.z * SPEED

else:

velocity.x = move_toward(velocity.x, 0, SPEED)

velocity.z = move_toward(velocity.z, 0, SPEED)


# Apply movement and rotation

move_and_slide()


# Rotation (limited to 60 degrees)

if Input.is_action_pressed("move_left"):

if rotation_angle > -PI / 3:

rotation_angle -= rotate_speed * delta

rotate_y(rotate_speed * delta)

elif Input.is_action_pressed("move_right"):

if rotation_angle < PI / 3:

rotation_angle += rotate_speed * delta

rotate_y(-rotate_speed * delta)

else:

rotation_angle = move_toward(rotation_angle, 0, rotate_speed * delta)

rotate_y(-rotation_angle * delta)  # Smoothly rotate back to center


# Movement based on "andaradelante" action (optional)

if Input.is_action_pressed("andaradelante"):

translate(Vector3(0, 0, -0.009))


# Mouse-based movement (optional)

if Input.is_action_pressed("mouse_left"):

translate(Vector3(0.0, 0.00, -0.04))


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

OTRO RESULTADO DE EQUILIBRIO DE GIRO

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


extends CharacterBody3D


var rotation_angle = 0.0  # Ángulo de rotación actual

var rotate_speed = 10.0  # Velocidad de rotación


const SPEED = 0.2        # Velocidad de movimiento

const JUMP_VELOCITY = 4.5 # Velocidad de salto


var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")


var is_rotating_left = false

var is_rotating_right = false


func _physics_process(delta):

# Vertical movement (jumping)

if not is_on_floor():

velocity.y -= gravity * delta


if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y = JUMP_VELOCITY


# Horizontal movement (based on input)

var input_dir = Input.get_vector("ui_left", "ui_right", "andaradelante", "detenerse")

var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()


if direction:

velocity.x = direction.x * SPEED

velocity.z = direction.z * SPEED

else:

velocity.x = move_toward(velocity.x, 0, SPEED)

velocity.z = move_toward(velocity.z, 0, SPEED)


# Apply movement and rotation

move_and_slide()


# Rotation (limited to 60 degrees, one time per press)

if Input.is_action_just_pressed("move_left") and not is_rotating_left:

if rotation_angle > -PI / 3:

rotation_angle -= rotate_speed * delta

rotate_y(rotate_speed * delta)

is_rotating_left = true

elif Input.is_action_just_released("move_left"):

is_rotating_left = false


if Input.is_action_just_pressed("move_right") and not is_rotating_right:

if rotation_angle < PI / 3:

rotation_angle += rotate_speed * delta

rotate_y(-rotate_speed * delta)

is_rotating_right = true

elif Input.is_action_just_released("move_right"):

is_rotating_right = false


# Movement based on "andaradelante" (optional)

if Input.is_action_pressed("andaradelante"):

translate(Vector3(0, 0, -0.009))


viernes, 29 de noviembre de 2024

GDScript, una animacion la detiene al presionar tecla "u" con mapa de entrada llamado"paraanimacion" al soltar prosige;

 extends Node3D


var animation_player = null

var animation_playing = false

var target_animation = "MakeHuman default skeleton|pistolaenmanodisparando"


func _ready():

# Obtener una referencia al nodo AnimationPlayer

animation_player = $AnimationPlayer




# Reproducir la animación si existe

animation_player.play(target_animation)

animation_playing = true


func _process(delta):

# Controlar la reproducción de la animación con la tecla "u"

if Input.is_action_pressed("paraanimacion"):

if animation_playing:

# Detener la animación

animation_player.stop()

animation_playing = false

elif Input.is_action_just_released("paraanimacion"):

if not animation_playing:

# Reanudar la animación

animation_player.play(target_animation)

animation_playing = true

lunes, 25 de noviembre de 2024

extends CPUParticles3D, GDScript rota el plano de particulas constantemente; para conseguir efectos;

 extends CPUParticles3D



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

func _ready() -> void:


pass # Replace with function body.



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

func _process(delta: float) -> void:

rotate_z(1.2)

pass


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

otro ejemplo en otro eje

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

extends CPUParticles3D



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

func _ready() -> void:


pass # Replace with function body.



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

func _process(delta: float) -> void:

rotate_x(2)

pass

-----------------------------------------
otro ejemplo mas en los 3 ejes x,z,y
----------------------------------------------


extends CPUParticles3D


# Called when the node enters the scene tree for the first time.
func _ready() -> void:

pass # Replace with function body.


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
rotate_z(1.4)
rotate_x(1.7)
rotate_y(1.1)
pass

jueves, 21 de noviembre de 2024

GDScript para Godot 4.3 por tiempo cambia la escena, por presional tecla del pc numero -9- cambia la escena, y al presionar -esc- sales del juego;

 extends Node


var tiempo_transcurrido = 0.0  # Variable para almacenar el tiempo transcurrido


func _process(delta):


if Input.is_action_pressed("ui_cancel"):

get_tree().quit()


tiempo_transcurrido += delta


if tiempo_transcurrido >= 12.0:

#queue_free()

var siguiente_escena = preload("res://ESCENAS/world_environmentESCENA PRINCIPAL-9-.tscn")  # Precargar la escena

get_tree().change_scene_to_packed(siguiente_escena)  # Cambiar a la escena precargada (Godot 4.2)

#queue_free()  # Liberar este nodo después del cambio de escena


# Nueva condición para cambiar de escena al presionar "9"

if Input.is_action_just_pressed("PISONUEVEPEROBOYAL10"):

var nueva_escena = preload("res://ESCENAS/world_environmentESCENA PRINCIPAL-9-.tscn")

get_tree().change_scene_to_packed(nueva_escena)


pass # Replace with function body.