为什么我的玩家在碰撞器中沿对角线移动?

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

我有一个简单的设置。一个带有相机的玩家、一个玩家行走的飞机以及两堵带有盒子碰撞器的墙壁。

问题 当向一个方向(X 轴或 Z 轴)移动时,玩家会在接触墙壁时停止。但在两堵墙相交的角落,当使用 W 和 D 键对角移动时,玩家会穿过或滑过。我怎样才能防止这种情况发生,因为我已经为此苦苦挣扎了一段时间了。

下面是我的角色控制器脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class playerController : MonoBehaviour
{
    public float p_moveSpeed = 10f;

    void Start()
    {

    }

    void Update()
    {
        float horizontalInput = Input.GetAxisRaw("Horizontal");
        float verticalInput = Input.GetAxisRaw("Vertical");

        Vector3 moveDirection = new Vector3(horizontalInput, 0f, verticalInput);
        transform.position += moveDirection * p_moveSpeed * Time.deltaTime;
        moveDirection.Normalize();
    }
    void LateUpdate()
    {
        Vector3 position = transform.position;
        transform.position = position;
    }

}

下面是我靠墙拍摄的屏幕截图,另一张屏幕截图是我穿过相交的两堵墙,请记住两堵墙上都有一个盒子碰撞器。

这里我被压在墙上,径直走进去......

在对角线移动时,我滑过它们相交的墙壁,我在玩家所在的区域周围画了一个蓝色圆圈......

作为我的墙的立方体的检查器属性...

我的胶囊播放器的 INSPECTOR 属性...

就好像我的玩家走过十字路口,我不知道如何纠正它。 对于那些愿意提供帮助的人,提前表示感谢。我看过很多关于碰撞的视频和教程,但我从来没有见过这样的东西,玩家在碰撞墙壁时能够停下来,但会穿过交叉墙壁(附有碰撞器)......

  • 我尝试过用碰撞器将球体放在角落里。
  • 我尝试在层次结构中将两面墙设为静态。
  • 我尝试将两面墙设置为运动
  • 我尝试过使用所有可能的碰撞器。
  • 我尝试添加更多刚体。
  • 对于刚体,我多次更改了碰撞检测,但没有成功。
  • 我尝试调整播放器和墙壁的大小,但没有任何反应,仍然是同样的问题。
unity-game-engine collision-detection
1个回答
0
投票

如果通过重复设置对象的位置来移动对象,碰撞并不总是有效。如果您希望内置的碰撞解决系统发挥作用,您应该设置对象的刚体速度分量。

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