我的平台游戏的光线投射控制器的一个特点是玩家可以通过单向平台跳下来.这很好用,但我想添加额外的功能,如果玩家将跳跃的平台在一定距离内,玩家将只能跳下来.
我的平台控制器的跳跃功能如下所示:
我试过制作一个跳跃方法,从角色的盒子对撞机的中心创建一个新的光线投射(下面的代码中没有显示,因为到目前为止我完全不成功),并检查一定距离的碰撞.我的问题是它总是检测到它将要从中跳下的平台的对撞机,并且永远不会有机会检测到其他任何东西.
如何让这个新的光线投射忽略第一次碰撞,可能检测到光线距离内的碰撞,如果碰到某些东西让我的角色跳下来?另外,我是否需要进行新的光线投射,或者我可以在控制器上使用当前的光线投射?
这里有一些我的raycast控制器脚本,希望能够解释一些功能:
private void MoveVertically(ref Vector3 deltaMovement)
{
float directionY = Mathf.Sign(deltaMovement.y);
float rayLength = Mathf.Abs(deltaMovement.y) + skinWidth;
for (int i = 0; i < verticalRayCount; i++)
{
Vector2 rayOrigin = (directionY == -1) ? raycastOrigins.bottomLeft : raycastOrigins.topLeft;
rayOrigin += Vector2.right * (verticalRaySpacing * i + deltaMovement.x);
RaycastHit2D hit = Physics2D.Raycast(rayOrigin, Vector2.up * directionY, rayLength, collisionMask);
Debug.DrawRay(rayOrigin, Vector2.up * directionY * rayLength, Color.red);
if (hit)
{
if (hit.collider.tag == "platformOneWay")
{
if (directionY == 1) …Run Code Online (Sandbox Code Playgroud)