C# 设置2d对象动画时,`Transform.Translate()`停止工作
我正在开发一个2D游戏中的敌人AI,我正在开发。这个敌人游泳,我想为敌人制作一个“浮动效果”动画,所以我制作了一个游戏对象Y轴上下弹跳的动画 我使用C# 设置2d对象动画时,`Transform.Translate()`停止工作,c#,unity3d,animation,game-development,C#,Unity3d,Animation,Game Development,我正在开发一个2D游戏中的敌人AI,我正在开发。这个敌人游泳,我想为敌人制作一个“浮动效果”动画,所以我制作了一个游戏对象Y轴上下弹跳的动画 我使用transform.Translate()来移动游戏中的敌人,在我制作这个动画之前,它工作得很好。但是,在播放动画时,敌人无法向任何方向移动 public virtual void Move(float speed) { if (canMove) { transform.Translate(new Vector2(s
transform.Translate()
来移动游戏中的敌人,在我制作这个动画之前,它工作得很好。但是,在播放动画时,敌人无法向任何方向移动
public virtual void Move(float speed)
{
if (canMove)
{
transform.Translate(new Vector2(speed, 0) * Time.deltaTime);
}
}
一旦某个属性的关键帧处于动画师的任何状态,动画师将始终否决脚本中所做的任何更改,因为动画更新都已完成。您可以尝试将代码移动到
LateUpdate
或者在特定情况下,您根本不希望位置的x
组件设置关键帧。只需从动画中删除该位置的x
(和z
)组件的所有关键帧,以便只有y
具有关键帧。这应该能解决你的问题
或者,将你的移动脚本作为你的
动画师在层次结构中更高级别的游戏对象上使用,意思是添加一个新的游戏对象,使动画对象成为它的子对象,并将你的移动脚本放在parant对象上。你可以控制角色在脚本中的y位置,所以你的脚本和unity的动画系统之间没有冲突。从概念上讲,我认为最好将运动限制在一个系统内。