【发布时间】:2017-05-31 09:37:02
【问题描述】:
感谢您查看我的帖子。我有两个角色在舞台上,他们有 mixamo 空闲动画状态,用于战斗机姿态。
我已将彼此面对的角色放置在使用 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 轴上偏移。
我在网上看到过类似的问题,但大多数是指一直看着相机或找一个物体看着角色。我需要这两个人面对面。他们这样做,没有动画。我也尝试过打开和关闭根动画,也没有任何乐趣。
帮助表示赞赏。
【问题讨论】:
标签: c# animation unity3d rotation