我正在用 Unity3D 设计一个迷宫。迷宫有许多分岔,玩家将在每个分岔前停下来,只需选择左或右。然后一个自动动画将移动玩家通过下一个分叉,直到迷宫的尽头(或直到死胡同)。
为了让我在 Unity 项目中使用AniMate和 C# 为播放器设置动画。使用 AniMate 我只是为每个分叉创建一个点对点动画(例如下面的法师:从开始/红色箭头到点 5)
我的问题是我的动画脚本(与“第一人称控制器”相关联)无法正常工作,因为不尊重物理(玩家穿过墙壁)。如果在同一个项目中我启用了 Unity 中的标准角色控件,那么我可以在迷宫中使用墙壁等物理约束来导航......(即我有碰撞器)。
这是我在按左键从起点、谷点 1 到点 2 时使用的代码示例:
void FixedUpdate () {
if (Input.GetKey(KeyCode.LeftArrow)) {
//To point 1
Hashtable props = new Hashtable();
props.Add("position", new Vector3(756f,112f,1124f));
props.Add("physics", true);
Ani.Mate.To(transform, 2, props);
//To point 2
Hashtable props2 = new Hashtable();
props2.Add("position", new Vector3(731f,112f,1124f));
props2.Add("physics", true);
Ani.Mate.To(transform, 2, props2);
}
}
当我按下左箭头按钮时,实际上发生的情况是玩家使用穿过墙壁的直线直接移动到点 2。我试图将“Physics = true”传递给 AniMate,但它似乎没有帮助。
关于如何解决这个问题的任何想法?
或者......关于如何获得更优化代码的任何提示,只需使用一系列 vector3 坐标(每个点一个)来获得我想要的简单动画,而无需声明 new Hashtable(); 等等……每次?我选择 AniMate 只是因为 1. 我是 Unity 的初学者 2. 我不需要复杂的动画(例如我不需要使用 iTween),只需沿直线固定动画,我需要一些非常简单快速的东西在脚本中实现。但是,如果有人有同样简单的解决方案,它将受到欢迎。
预先感谢您的帮助