C# 单位偏移周期始终从开始开始?
好的,每次触发时,我都试图从我的动画控制器Unity中的C#中的不同位置(偏移)启动我的动画剪辑,但我不理解循环偏移是如何工作的(很明显),我的剪辑似乎从一开始就开始了 我所拥有的是一个行走循环,由bool根据角色是否移动而设置,但我尝试让角色交替(让它播放完整的行走循环,但通过播放的动画增量,因为它仅在角色移动时播放)其左右步数。否则看起来很奇怪 我是如何做到这一点的,就是有一个浮动,并在它们移动时增加该浮动,然后将该浮动指定给动画的循环偏移量。这样,我想下次触发动画时,它将从停止的位置开始 我不确定偏移量指的是时间、帧还是百分比,所以到目前为止我只是这样做了:C# 单位偏移周期始终从开始开始?,c#,animation,unity3d,C#,Animation,Unity3d,好的,每次触发时,我都试图从我的动画控制器Unity中的C#中的不同位置(偏移)启动我的动画剪辑,但我不理解循环偏移是如何工作的(很明显),我的剪辑似乎从一开始就开始了 我所拥有的是一个行走循环,由bool根据角色是否移动而设置,但我尝试让角色交替(让它播放完整的行走循环,但通过播放的动画增量,因为它仅在角色移动时播放)其左右步数。否则看起来很奇怪 我是如何做到这一点的,就是有一个浮动,并在它们移动时增加该浮动,然后将该浮动指定给动画的循环偏移量。这样,我想下次触发动画时,它将从停止的位置开始
if (animOffset >= 1f) { //was full clip
animOffset = 0.0f;
}
//anim help
currentPos = transform.position;
if (currentPos != lastPos) {
//print ("moving now");
animator.SetBool ("isWalking", true);
if (InputManager.stepCount % 2 != 0) {
print ("moving right");
animator.SetFloat ("walkOffset",animOffset);
} else {
print ("moving left");
animator.SetFloat ("walkOffset",animOffset);
}
animOffset += 0.1f;
} else {
animator.SetBool ("isWalking", false);
}
lastPos = currentPos;
问题是,我没有获得所需的效果,并且看着动画控制器,似乎剪辑总是从头开始,请参见:
蓝色小条总是从头开始。我做错了什么?如何制作精确的运行循环偏移量?这可能是您想要控制动画位置的原因。您可以将动画上的“循环偏移量”链接到动画师上的参数(在本例中,我称之为
偏移量
)。然后可以在代码中设置此参数:
这是animator窗口(忽略速度,这里不需要)。我有一个状态OnState
这是OnState
状态的检查器窗口。我勾选了循环偏移旁边的参数
,然后它让我选择我的参数偏移
在这段代码中,我得到了动画师并设置了属性Offset
,这可以通过编程或通过检查器进行设置
public class MyObject : MonoBehaviour
{
public float Offset= 0f;
Animator animator;
void Awake()
{
animator = GetComponent<Animator>();
animator.SetFloat("Offset", Offset);
}
公共类MyObject:单行为
{
公共浮动偏移量=0f;
动画师;
无效唤醒()
{
animator=GetComponent,因此您可以在动画中找到提要移动的位置,并将其设置为0和1的比例。“我不确定偏移量是指时间、帧还是百分比”,它指的是百分比(0..1.0)