将体素设置为动画,就好像它们是unity3d中的2d精灵一样.还有比这更好的方法吗



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

当我四处寻找动画化这些体素模型的方法时,我真正看到的只是添加骨骼/装备的方法,创建一个平滑的动画,imo掩盖了体素样式。

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

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

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

这真的是在团结上做到这一点的最佳方法吗?我正在量子位中制作动画的每一帧(目前),使用站立的体素作为子对象,然后相对于用户输入破坏和实例化不同的预制体(用作动画帧)。

有人在没有装备的情况下制作体素动画吗?我是不是找错树了?

感谢

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

我建议您像对待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];
}
}

相关内容

  • 没有找到相关文章

最新更新