3D动画精灵技术解析与应用
1. 3D动画精灵基础
在处理3D动画精灵时,代码会因需要检查精灵的活动状态而变得复杂。一个非活动的精灵是不可见的,因此改变其姿势没有意义。在 setPose()
方法中使用名称作为参数,这意味着调用者必须知道 poses[]
中使用的姿势名称,另一种选择是使用 Switch
节点中的子索引位置,但这更难记忆。
精灵的活动状态可以通过 setActive()
方法进行切换,该方法接受一个布尔参数:
public void setActive(boolean b)
{
isActive = b;
if (!isActive) {
visIms.clear( );
imSwitch.setChildMask( visIms ); // display nothing
}
else if (isActive)
setPoseNum( currPoseNo ); // make visible
}
这种方法需要一个全局整数 currPoseNo
,用于记录当前姿势的索引,它在精灵一段时间不活动后使其可见。
2. 地板边界检测
AnimSprite3D
中的移动和旋转方法与 Sprite3D
基本相同,除了 move