繁体   English   中英

我试图找出防止玩家穿过墙壁和其他物体的最佳方法是什么?

[英]I'm trying to figure out what is the best way to prevent from the player to move through walls and other objects?

我可以想到我将在游戏中使用哪些对象,然后将它们添加到盒子碰撞器或网格碰撞器并开始设置它们。 或者我可以使用光线投射并检测到我想避免穿过的物体的距离? 那是使用光线投射的距离计算的逻辑吗?

void FixedUpdate()
{
    Vector3 direction = new Vector3(transform.position - lastPosition);
    Ray ray = new Ray(lastPosition, direction);
    RaycastHit hit;
    if (Physics.Raycast(ray, hit, direction.magnitude))
    {
        // Do something if hit
    }

    this.lastPosition = transform.position;
}

不确定这是否是放置在播放器上的正确脚本。 也许需要使用图层? 但逻辑是,如果玩家距离 object 0.3f 距离,玩家将停止前进。

使用统一,你真的不想从后面的代码中做任何这些事情,而是你的“播放器”上有一个 RigidBody 或 RigidBody2D 组件,然后是一个盒子碰撞器或网格碰撞器(或 2d 版本那些)在你的碰撞物体上。

这将处理所有碰撞并在玩家撞到 object 时停止。

另一个建议是,在后端处理碰撞时,您不想使用 FixedUpdate 就好像 object 的移动速度足够快,它将在更新之间通过碰撞器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM