首先,你有没有尝试过Anima2D -它是免费的统一插件,由团结技术,以动画2D字符使用骨骼。它使动画过程更快更容易。有一些关于Anima2D的有用视频:
https://www.youtube.com/watch?v=lG4AeOriIco&
https://www.youtube.com/watch?v=MhOJ742NSoM&
关于你的问题:
- 如果您想在不同的视图中看到您的角色,您必须至少制作3组GameObjects (前面、后面和配置文件-右转或左转)。但是,你不需要让不同的角色组合向右或向左。您只需将trans.scale.x更改为-1或1。例如:
如果(/*Character右转*/){ transform.localScale =新的Vector3(1,1,1);} if(/*Character左转*/){//这将镜像您的字符transform.localScale =新的Vector3(-1,1,1)};
但是,如果你想改变角色的右边和左边,你必须制作两组不同的GameObjects。
- 您可以在场景中使用GameObject.SetActive关闭或打开某些GameObjects。例如,假设您具有GameObjects:结构的GameObjects (您的脚本在播放器上)的结构,那么您可以使用这样的代码:
//为类公共类PlayerController选择任意名称: MonoBehaviour { //Enum表示播放器状态的状态{ Front = 0,Back = 1,Profile =2} //Set 0 to Front state GO,1 to Back state GO,第2 to Profile state GO,检查器SerializeField私有列表parentsForEachState;//Field用于了解当前状态和当前GameObjects集,以显示私有状态currentState = state.Front;void SwitchState(state newState){ for(int i= 0;i<3/*state*/;i++){ if(i == (int)newState){ parentsForEachStatei.SetActive(真);}=={ parentsForEachStatei.SetActive(false);}//还将parentsForEachStatenewState动画设置为currentState = newState;}}
- 我看不出有什么变体能在两国之间顺利过渡。因此,我建议只切换GameObjects,就像我在前面的代码中显示的那样。你也可以使用标准统一动画转换,使它更加流畅。所以我建议你从Idle南方转到Idle East,然后从Idle East转到Walking East。这看起来比从伊德尔南移到东行要好一些。