📄 playerposition.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace SceneryComponent.Components.Animation
{
/// <summary>
/// Define la posici髇 de un jugador
/// </summary>
public class PlayerPosition
{
// Indice del bone que representa la posici髇 del jugador
public readonly int Index = -1;
// Nombre del bone que representa la posici髇 del jugador
public readonly string Name = null;
// Bone que representa la posici髇 del jugador
private ModelBone m_Bone = null;
// Posici髇 adicional a la posici髇 del jugador
private Vector3 m_AditionalTranslation = Vector3.Zero;
/// <summary>
/// Constructor
/// </summary>
/// <param name="bone">Bone que representa la posici髇 del jugador</param>
/// <param name="translation">Posici髇 adicional a la posici髇 marcada por el bone</param>
public PlayerPosition(ModelBone bone, Vector3 translation)
{
this.Index = bone.Index;
this.Name = bone.Name;
m_Bone = bone;
m_AditionalTranslation = translation;
}
/// <summary>
/// Obtiene la matriz de vista desde la posici髇 del jugador
/// </summary>
/// <param name="controller">Controlador de animaci髇</param>
/// <param name="modelTransform">Matriz de transformaci髇 del modelo</param>
/// <returns>Devuelve la matriz de vista desde la posici髇 del jugador</returns>
public Matrix GetViewMatrix(AnimationController controller, Matrix modelTransform)
{
// Calcular la transformaci髇 global compuesta por la transformaci髇 adicional, la transformaci髇 del bone y la transformaci髇 del modelo
Matrix transform =
Matrix.CreateTranslation(m_AditionalTranslation) *
controller.GetAbsoluteTransform(m_Bone) *
modelTransform;
// Obtener los vectores para construir la matriz de vista
Vector3 position = transform.Translation;
Vector3 forward = transform.Forward;
Vector3 up = transform.Up;
// Construir la matriz de vista usando la posici髇, el eje de vista y la inclinaci髇 final
return Matrix.CreateLookAt(
position,
position + forward,
up);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -