【发布时间】:2019-02-05 19:34:53
【问题描述】:
在我的小平台游戏中,我有一个可以跳跃的角色。如果他跳得足够高,相机应该也跟着角色向上。如果他不够高,相机将停留在其 Y 轴上并且仅通过 X 轴跟随玩家。我是这样实现的:
void FixedUpdate()
{
float posX = Mathf.SmoothDamp(transform.position.x, player.transform.position.x, ref velocty.x, smoothTimeX);
float posY = Mathf.SmoothDamp(transform.position.y, (player.transform.position.y + OffSetY), ref velocty.y, smoothTimeY);
if(player.transform.position.y > heightOfPlayerForCamFollow) // change camera hight only when player has reached certain height level
{
transform.position = new Vector3(posX, posY, transform.position.z);
}
else
{
transform.position = new Vector3(posX, 0, transform.position.z);
}
}
但是,现在,一旦玩家达到一定的跳跃高度,相机就会跳转到玩家的位置,而不是跟随他。仅仅因为我给它玩家 Y 位置的事实。我将如何调整我的代码以使相机跟随而不是传送到玩家?
谢谢你:)
【问题讨论】:
-
嗯,你无法用这个逻辑来实现这一点。因为您通过检查位置来检查玩家跳得多高。也许你可以改变你的逻辑。你的玩家是如何跳跃的?用户应该怎么做才能跳得足够高并按住
space键或其他东西? -
没错,就是按住空格键。我可能会使用在天空中的高点进行碰撞检测,但这真的会改变什么吗?
-
在我看来,你必须已经决定何时按下空格键,玩家是否会跳得足够高,而不是在玩家到达某个目的地时。然后你可以
lerp到该位置。
标签: unity3d