1

我正在制作体素模型,我喜欢像素艺术。我想统一使用的模型是非常小的类人动物,纯粹是为了功能。

当我四处寻找为这些体素模型设置动画的方法时,我真正看到的只是添加骨骼/绑定的方法,创建一个与体素风格相悖的平滑动画。

我想让这些体素以与 2D 精灵动画相同的方式动画。例如,我最好的也是迄今为止唯一的跳跃动画技术是破坏站立体素对象并在我按下跳跃时立即实例化跳跃体素模型对象。不涉及过渡,只是老式的精灵风格动画;像马里奥。

我的代码将是(显然不是字面意思,但你明白了):

if (player presses jump){
    destroy.this.gameobject
    instantiate prefab (jumpmanvoxelmodel)
}

这真的是团结一致的最佳方法吗?我在 qubicle 中制作动画的每一帧(目前),使用站立体素作为子对象,然后相对于用户输入销毁和实例化不同的预制件(用作动画帧)。

有人在没有绑定的情况下制作体素动画吗?我在吠叫错误的树吗?

谢谢

如果不清楚,这就是我的意思: https ://www.youtube.com/watch?v=u2e8lfViIxg

4

1 回答 1

2

我建议您像对待 2D 精灵一样对待体素模型。每个动画帧都有一个网格,然后切换网格。这样您就不会产生必须由垃圾收集器收集的垃圾对象。

这是一个基本示例,它只是从第一帧到最后一帧一遍又一遍地运行。

class MeshAnimation : MonoBehaviour
{
    public Mesh[] frames = new Mesh[0];
    public float animationSpeed = .1f;

    private float animationStartTime;
    private int currentFrame;

    void Start()
    {
        currentFrame = 0;
        animationStartTime = Time.time;
        UpdateMesh();
    }

    void Update()
    {
        currentFrame = Mathf.FloorToInt((Time.time - animationStartTime) / animationSpeed);
        currentFrame = currentFrame % frames.Length;
        UpdateMesh();
    }

    void UpdateMesh()
    {
        GetComponent<MeshFilter>().mesh = frames[currentFrame];
    }
}
于 2017-01-24T14:45:46.137 回答