首页 > 解决方案 > UFPS + 现代废墟 = 玩家正在穿墙

问题描述

首先,我是 Unity 游戏开发领域的新手,但我在使用 C# 方面确实有一定的经验。我正在使用Modern Ruins的 Demo Scene 作为主要地图,使用开箱即用的UFPS 。出于某种原因,默认播放器 (HeroHDWeapons) 正在穿过地图上的每一个对象:墙壁、柱子,几乎所有东西。

但是,我也有一个人形资产,可用于我的 AI/BOT 使用Low Poly Soldiers,也是开箱即用的,我刚刚添加了一个胶囊对撞机,但他没有穿过墙壁 - 或者可能因为他是使用 Nav Mesh Agent 进行移动。

根据我从基本统一教程中学到的知识,我已经为我的 Player 模型尝试了我所知道的一切。我添加了一个刚体组件,它使我的玩家在勾选“使用重力”选项的情况下从地图上掉下来,但无论如何,它仍然会穿过墙壁。我还尝试添加一个胶囊对撞机,仍然通过。

我确实尝试在地图上的一个对象上添加一个胶囊对撞机,但玩家突然停止通过它。当然,在地图上的每个对象上添加一个碰撞器组件并不是一个好主意——考虑到它们有数百个。

这是播放器模型的属性: 在此处输入图像描述

PS:我已经做了相当多的研究,但没有一个有效。除了那些谈论使用其他语法的人,Rigidbody.MovePosition(Vector3)因为我不知道它会对整个 UFPS 框架产生什么影响。

标签: c#unity3dgame-physics

解决方案


你需要对撞机。就那么简单。挑选并选择要碰撞的对象,如果它更容易的话。请注意,统一引擎一次只能处理 65536 个不同的对撞机。哈哈。

根据 Unity3D 文档:

“请注意,Unity 使用的 PhysX 引擎在一个场景中最多只能处理 65536 个碰撞器。”


推荐阅读