我正在制作一款3D平台游戏/益智游戏,主要想法/卖点是玩家可以变成一个球,并且可以爬到墙上,有点像翻转重力。玩家只能在特定的墙壁上移动,如果他们有特定的层*我对 Unity 有点陌生,所以我希望能得到一些帮助。
我假设要拉这样的东西,如果玩家处于球形态,我需要禁用他们的刚体重力?剩下的对我来说都是空白...
(*老实说,我并不完全 100% 确定什么是图层,但它们在这种情况下使用,对吗?)
图:
有很多方法,但你绝对应该利用重力来做某事。例如,您可以在球模式下进入触发器时将刚体设置为运动学,并将运动学设置为 false OnTriggerExit 或如果形式返回到人形机器人。 或者如果你想将重力反向朝向墙壁,只需将整个世界旋转 90 度
抱歉,回复晚了,不知道您是否还需要。但如果你这样做,这里有一个想法
就像上面所说的,有多种方法可以做到这一点。这也取决于你的角色动作。如果您使用刚体进行角色移动,那么如果您尝试翻转重力,最简单的事情可能是添加一个
rb.AddForce();
,它会不断地将玩家推向一个方向。然后你就必须扰乱实际玩家的重力,以防止它在 z 轴上不断下落。我不是 100% 确定这会起作用,但为了防止它落在 z 轴上,你可以实现一个 Physics.gravity = new Vector 3(0, -1f, 0);
如果你想让玩家跳跃,那么你可以降低添加一个跳跃力来降低力添加到玩家身上。对于相机情况,您可能希望将一个游戏对象放置在玩家下方,并且您将有一个脚本来始终将相机放在该游戏对象上。您可以将摄像机指定为始终沿玩家所在的方向旋转,但这也取决于您使用的摄像机系统。 (但它也可能在球滚动时引起一些问题)。您可以使用这行代码使相机始终坚持玩家旋转。
public gameObject cameraPos;
void Update()
{
transform.position = cameraPos.transform.position;
transform.rotation = cameraPos.transform.rotation;
}