如何增加到向量3位置的距离

问题描述 投票:0回答:1

当玩家进入出站碰撞器时,我保存他最后的位置:

public void outboundEnter()
{
    lastOutsidePosition = player.transform.position;
}

几秒钟后,如果他没有出去,我会把他传送回来

public void teleportOut()
{
    player.transform.position = lastOutsidePosition;
}

问题在于

lastOutsidePosition
与碰撞开始的位置相同。

所以我需要增加一些位置值,以移动玩家避免相同的开始碰撞。

我正在尝试,但没有成功:

lastOutsidePosition.normalized * 1.3
unity-game-engine
1个回答
0
投票

为了将位置更改为边界内的某个位置,您将需要一个面向边界内的方向向量。

您可以使用的一个简单方向是与球员出界时的方向相反的方向。您需要存储这个方向,以便在传送回来时可以使用它。

inBoundsDirection = -player.transform.forward;

要将玩家移动特定量,请标准化方向向量并将其乘以您想要移动的距离。

directionalMove = inBoundsDirection.normalized * distanceToMove;

根据玩家退出的角度,这将产生不同的结果。如果角度接近平行,那么您可能会发现向内移动得不够。如果情况确实如此,您将需要获得不同的方向向量。一种可能的解决方案是你撞到的“墙”的正常情况。您还可以暴露一个方向,放置边界,使其前面朝内。

© www.soinside.com 2019 - 2024. All rights reserved.