首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >刚体与墙壁碰撞时的弹跳(Autowalk.cs)

刚体与墙壁碰撞时的弹跳(Autowalk.cs)
EN

Stack Overflow用户
提问于 2016-08-07 06:25:51
回答 2查看 3.5K关注 0票数 0

我正在为Google构建一个VR迷宫游戏,以https://github.com/JuppOtto/Google-Cardboard/blob/master/Autowalk.cs为脚本来移动玩家。到目前为止,我还没有发现任何对我有帮助的东西,我已经尝试过在物理材料上乱搞,冻结/解冻我的刚体的约束,将角阻力设置为无穷大等等。

正如我所了解的,问题应该是,我的刚体正在穿透墙上有网状结构对撞机,它会被推回来,从而导致这种奇怪的“弹跳行为”。几乎感觉到刚体的角色不断地试图穿过墙壁,尽管它不能。

这在很大程度上不会是个大问题,但是游戏中的一些角落也有一些小物体,上面也有网格对撞机,如果玩家进入这些物体和墙壁之间,它们就会被推开(弹出)出游戏区域,完全穿过墙壁。

这就是我的角色移动的原因,我认为这必须改变为其他的东西:

代码语言:javascript
运行
复制
if (isWalking) 
{
    Vector3 direction = new Vector3(head.transform.forward.x, 0, head.transform.forward.z).normalized * speed * Time.deltaTime;
    Quaternion rotation = Quaternion.Euler(new Vector3(0, -transform.rotation.eulerAngles.y, 0));
    transform.Translate(rotation * direction);
}

下面是一些关于我的设置的信息:

具有运动脚本的字符有一个胶囊对撞机和一个质量为1的刚体: 1;拖动和角拖动: 0;使用重力,不是运动学,内插设置为无碰撞检测设置为离散。位置没有冻结,但旋转是所有的X,Y和Z坐标,这样它就不会掉下来。

墙壁(3D模型)上有一个简单的网格对撞机,仅此而已。

我想我也应该提到,我不希望角色在与墙壁碰撞时停止,因此我不认为使用触发器是个好主意。只有当玩家面对墙的时候才能完全停止,但是如果有一个角度,我希望玩家沿着墙“滑行”。

EN

Stack Overflow用户

回答已采纳

发布于 2016-11-07 20:53:00

您还可以删除Rigidbody组件,并在播放机上使用CharacterController组件,并使用SimpleMove函数而不是转换播放机。转换函数将播放器设置在一个新的向量位置上,这将使播放器与墙壁交叉,而不是与它们碰撞。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38811540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档