Cocos官方3D跑酷Demo

这是 Cocos Demo Team 美女布道师,最新上架的一款 3D 跑酷角色控制游戏DEMO。模拟角色真实的上坡、下坡会遇到的角色抖动问题,并提了供解决方法。

image

资源链接:http://store.cocos.com/app/detail/2989

convex-mesh-issue 是解决采用凸包的方案平行道路和斜坡处容易产生一个很明显的接缝,人物会出现跳跃悬浮问题。

pile-rigid-issue 场景演示障碍物刚体堆叠的处理方案,当使用刚体的砖块堆叠后,因为砖块尺寸较小造成不受力时会出现移动掉落问题。

static-mesh-issue 场景针对使用静态网格时,bullet返回碰撞信息出错造成偏移和抖动的问题。

想开发跑酷类游戏的伙伴们,快来下载体验吧!这将是一个极佳的 Cocos Creator 3.x 上手教程!

布道师正在积极准备相关图文教程,关注COCOS官方公众号,近期即将发布!

在使用过程中有任何疑问欢迎来本帖讨论!

7赞

大佬求微信

微信z6346289 ,欢迎加好友:ok_hand:

我都做完了,你给我看这个。。。

厉害呀,欢迎来晒晒你做的游戏,分享一下心得 :grinning:

哈哈,不厉害,公司项目 尚在研发期,上线后分享一下。

加下微信吧,请教事情,谢谢

我仔细阅读了源码。产生了几个疑问。
1.文件 rigidCharacter.ts里的 133行到 140行之间

 if (this._grounded) {
      Vec3.copy(this._groundNormal, this._groundContact.normal);
      this._toSteep = this._groundContact.normal.y <= Math.cos(this.slopeLimit * Math.PI / 180);
    } else {
      Vec3.copy(this._groundNormal, Vec3.UP);
      this._toSteep = false;
    }

在这里求解出去了 this.toSteep和 this._groundNormal 这个两个变量。但是没有任何其他的代码读取了这2个变量。求问,这2个变量求出来的用处是什么?

  1. static-mesh-issue 这个场景宣称
static-mesh-issue 场景针对使用静态网格时,bullet返回碰撞信息出错造成偏移和抖动的问题。

但是运行的时候很明显可以发现小人还是在抖动的。而且如果你把小人的速度调整快一点,调成14
6E9F016C-EA9A-49CA-A9F8-9746A20273B2
会发现小人抖动的更加厉害。

问题1:this.toSteep和 this._groundNormal 这两个变量做跳跃时需要的变量,在这个案例中可忽略不看。
问题2:static-mesh-issue是展示使用静态网格时会出现抖动偏移的问题,真正的解决方案是在convex-mesh-issue中白色小人的相关处理

一开始我也是想要在convex-mesh-issue这个场景了找到防止抖动的解决方案,所以我定位到this.toSteep和 this._groundNormal 这2个变量,以为他们有什么妙处,但是找不到他们的用武之地。
是不是 convex-mesh-issue 这个场景里,地板用一个长条刚体来做。然后如果有起伏的坡道,就额外多用一个 mesh-collider。这个就是解决方案?