Resultados 1 al 2 de 2

Cómo hacer que mi personaje se incline hacia arriba y abajo junto con MouseLook

  1. #1
    Fecha de ingreso
    Jun 2014
    Mensajes
    7

    Exclamation Como hacer que mi personaje se incline hacia arriba y abajo junto con mouselook

    Hola qué tal soy nuevo en este foro y mi consulta es la siguiente:
    Estoy creando un juego multiplayer en primera persona en Blender, tengo un modelo con un esqueleto emparentado, en el tiene un cubo que se encarga de la colisión y un plano, tengo los logics bricks configurados para mover el personaje con las teclas, también tengo el script que mueve la cámara en distintas posiciones y emparentado a un empty.

    Mi problema es el siguiente, y es que quiero que mi personaje se incline mirando hacia arriba o abajo según la posición de rotación de la cámara junto con el MouseLok, o hacer que la animación corra dependiendo si la cámara rota hacia arriba o hacia abajo, pero no sabría cómo hacerlo, quiero que el modelo se incline o deforme esto lo quiero para qué también pueda verse la inclinación de otros personajes para ser más real la cosa. Espero que mi idea les pueda dar a entender que es lo que quiero. Desde ya agradezco su cooperación.

    He probado con una animación y propertys, pero el inconveniente lo tengo cuando se cruzan los renders, getWindow.Width y height ya qué mientras quiero hacer la animación que se doble hacía abajo el otro eje no me deja ya que el getWindow establece a 0 las coordenadas para qué el mouse puede permanecer en el medio y se me hace un quilombo.

    Dejare una imagen de mi proyecto de lo que quiero lograr.

    Clic en la imagen para ver su versión completa. 

Nombre: Sin título.png 
Visitas: 36 
Tamaño: 1,006.8 KB 
ID: 194884

    -- IMÁGENES ADJUNTAS --

  2. #2
    Fecha de ingreso
    Dec 2025
    Mensajes
    0
    Para lograr que tu personaje se incline hacia arriba y abajo junto con el MouseLook en Blender, necesitas aplicar la rotación de la cámara al hueso del cuello o la cabeza del esqueleto. El enfoque moderno y recomendado es utilizar Python y el sistema de lógica de Blender, evitando depender exclusivamente de Logic Bricks para mayor control.

    Primero, asegúrate de que tu cámara está controlada por un script de MouseLook. Este script normalmente ajusta la rotación local de la cámara (o del empty al que está emparentada) en el eje X (para mirar arriba/abajo). Necesitas acceder a ese valor de rotación.

    Crea un script de Python en un controlador lógico. Asigna este controlador a un objeto siempre activo, como el empty padre de la cámara o el propio personaje. En el script, obtén las referencias a los objetos clave: la cámara (o el empty que rota verticalmente) y el hueso del personaje que quieres inclinar (por ejemplo, el hueso de la cabeza o el torso superior).

    Dentro de un bucle continuo (usando un controlador "Always" pulsado a un sensor "Python"), lee la rotación en el eje X de la cámara. Es crucial usar rotación local (camera.localOrientation.to_euler() o similar) para obtener el valor correcto. Luego, aplica esta rotación al hueso. No apliques el valor completo directamente, sino una fracción del mismo para que la inclinación del cuerpo sea más sutil que el movimiento de la cámara. Por ejemplo, multiplica el ángulo por 0.3 o 0.5.

    Debes limitar el ángulo de inclinación para que sea realista. Define un límite máximo y mínimo (por ejemplo, entre -30 y 30 grados en radianes) usando funciones como min() y max(). Luego, establece la rotación del hueso en el eje X a este valor limitado y escalado. Usa bone.rotation_euler para asignar la rotación en modo Euler.

    Para los personajes de otros jugadores en multijugador, este valor de inclinación calculado debe ser una variable que se sincronice a través de la red. En tu lógica de red, envía la rotación del hueso (o el ángulo calculado) junto con la posición y rotación general del personaje. En el cliente receptor, aplica este valor recibido directamente al hueso del personaje remoto para que todos vean la inclinación correctamente.

    Un error común es intentar usar getWindowWidth/Height para esto, lo cual no es necesario. El enfoque correcto es basarse únicamente en la rotación ya calculada por tu script de MouseLook. Olvida esas funciones para este propósito específico.

    Para herramientas actuales, si tu proyecto lo permite, considera migrar a Godot o Unreal Engine 5, que tienen sistemas de animación en red y control de cámara/cuerpo integrados y más robustos para multijugador. Pero dentro de Blender, la solución está en un script Python que vincule la rotación de la cámara a la rotación de un hueso, con límites y factor de escala.

Temas similares

  1. ¿Cómo hago que ésta falda no salga volando hacia arriba?
    Por nicknick en el foro Animación y Rigging
    Respuestas: 3
    : 18-04-2024, 05:34
  2. Impresoras 3D Autohome eje Z se desplaza hacia arriba sin llegar a la cama
    Por ALMA50 en el foro Impresoras 3D
    Respuestas: 2
    : 03-04-2023, 10:30
  3. Impresoras 3D Elego Mars 2 empuja hacia abajo y se queda al inicio
    Por masterjoti en el foro Impresoras 3D
    Respuestas: 3
    : 04-03-2021, 07:47
  4. Direccionar humo hacia abajo
    Por compañero en el foro Partículas y Dinámicas
    Respuestas: 4
    : 15-06-2017, 23:28
  5. Animar agua hacia arriba
    Por RMRacing en el foro Partículas y Dinámicas
    Respuestas: 2
    : 22-03-2016, 18:24

Etiquetas para este tema