感谢您查看我的帖子。我在舞台上有两个角色,它们具有混合动作状态的混合动作状态。
我已将角色彼此面对放置在使用定义目标的vuforia上,并使用Slerp旋转使每个角色彼此面对。我遇到的问题是,一旦空闲动画开始,它们都面向左边约45度。我看过动画,无法在任何地方看到旋转,所以我认为它可能是轴。我在下面添加了两个截图来演示问题。
左边的角色在双脚之间有一条白线,表示游戏对象确实面向右边的角色。当我看动画师时,空闲动画正在循环播放,如果我在周围移动角色,则旋转工作但仍然偏移。
我复制了mixamo动画以删除只读属性,看看我是否可以修复它。我在任何地方都看不到任何轮换。我也尝试在父变换中嵌入角色,并且没有快乐地旋转变换。
我进入了播放模式并查看了动画面板。然后发生了一件有趣的事。当我将洗涤器移动一帧时,角色会跳到正确的对面位置。
下面的图片显示了这一点。
突然,即使它在播放模式下停止播放动画,定位仍然是正确的。
这让我觉得它不是模型的轴问题,而是代码。 我有一个附加到每个玩家的脚本。这是更新方法。
void Update(){
if (!anim.GetCurrentAnimatorStateInfo(0).IsName("knocked_out")){
transform.position = new Vector3(transform.position.x,0,transform.position.z);
}
if (anim.GetCurrentAnimatorStateInfo(0).IsName("fight_idle")){
Vector3 direction = enemy.position - this.transform.position;
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(direction),0.1f);
}
if(Input.GetKeyUp(KeyCode.Space)){
reaction();
}
if(Input.GetKeyUp(KeyCode.K)){
flyingKick();
}
if(DefaultTrackableEventHandler.lostFound == true){
anim.SetBool("started", true);
GameObject theClone = GameObject.Find("UserDefinedTarget-1/Holder");
theClone.transform.localPosition = new Vector3(0,0,0);
}
}
它让我有点疯狂,我正在打破它,我甚至尝试了一个不同的空闲动画,并且有相同的结果,所以必须关闭。
这是在进入播放模式之前的战士原始变换位置,如果能够解决问题的话。
这是动画控制器。
我尝试为每个角色添加一个子变换并将其作为目标,但是当角色接近时,它们不会彼此面对,因为孩子需要在Z轴上偏移。
我在网上看到过类似的问题,但大多数人都是在看相机或者让对象一直看着这个角色。我需要这两个人面对面。他们这样做,没有动画。我试过打开和关闭root动画也没有任何乐趣。
帮助表示赞赏。