• 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    • 话题
    • 热门
    • 用户
    • 群组

    做了一个 Physics Piano 小例子

    3D图像引擎
    2
    11
    129
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 青
      青-Joker 最后由 编辑

      002.png

      VL 中的 Stride3d 真没有碰撞检测?!为了实现效果,用了 3D 的 Collision...估计性能开销会很大吧?

      MyPianoKey 就是那几个琴键(方块)的类,里面有 Highlight 和 Play Note;

      MyPianoBall 就是红色的小球;

      源文件在此 My Physics Piano-3.vl

      青 1 条回复 最后回复 回复 引用 0
      • 青
        青-Joker @青-Joker 最后由 编辑

        @青-Joker 更新了一下,把 For Each 放在外边了,这样更好理解一些……

        源文件在此 My Physics Piano-4.vl

        买 2 条回复 最后回复 回复 引用 1
        • 买
          买买提mmt @青-Joker 最后由 编辑

          此回复已被删除!
          1 条回复 最后回复 回复 引用 0
          • 买
            买买提mmt @青-Joker 最后由 编辑

            @青-Joker
            牛啊牛啊
            fbd8332b-2377-4560-a49d-755d2931eff6-1654835473013.png
            但是我没看懂这三个节点是怎么出来的

            青 1 条回复 最后回复 回复 引用 0
            • 青
              青-Joker @买买提mmt 最后由 编辑

              @买买提mmt 哈哈,也是蒙出来的,我大概看了一下 Stride3d 的引擎,人家是有碰撞检测的,可能是 VL 并没有引入这些功能吧;所以就用了这个 3D.Collision 来临时解决问题……但应该不完美,可能会有性能方面的问题……

              Transform 节点是用来读取 Entity 的 Transform 信息的;读出来的是一个 TransformComponent;然后再用 TransformComponent 的相关节点来获取更详细的信息,我这里用的是读取 Position;读取到 Position 后,用来生成一个 Sphere(join);因为我用的碰撞检测的 BoxInstersectsSphere 需要这个……

              买 2 条回复 最后回复 回复 引用 0
              • 买
                买买提mmt @青-Joker 最后由 编辑

                蒙都能蒙出来,换了我肯定想不到😅

                1 条回复 最后回复 回复 引用 0
                • 买
                  买买提mmt @青-Joker 最后由 编辑

                  @青-Joker
                  我之前还稍微看了一下VR的官方示例,感觉如果你的小球能用VR手柄扔上去会更好玩

                  1 条回复 最后回复 回复 引用 0
                  • 买
                    买买提mmt 最后由 编辑

                    我还有个问题:你这边是怎么筛选已经掉落出界的小球的。因为按照我原来的beta思维,你这边的< -4之后连了一个or,和resetAll在一起。然后居然这个or可以把两种效果分开,左边是可筛选、右边就是所有全部重置。

                    青 2 条回复 最后回复 回复 引用 0
                    • 青
                      青-Joker @买买提mmt 最后由 编辑

                      @买买提mmt beta 我重来没用过,不知道 beta 里面是啥样的;Gamma 这个是因为小球的 Reset 是定义在 MyPianoBall 中的一个叫 DoReset 的方法,它监听一个 Bang 事件;所以无论这个 Bang 是来自哪,只要 Bang 了就 Reset;这个也是 Class 的好处吧

                      1 条回复 最后回复 回复 引用 0
                      • 青
                        青-Joker @买买提mmt 最后由 编辑

                        @买买提mmt 如图
                        屏幕截图 2022-06-10 153203.png

                        1 条回复 最后回复 回复 引用 0
                        • 买
                          买买提mmt 最后由 编辑

                          @青-Joker
                          是,可能是我对class还是不太了解。在我的印象里如果要筛选出那些掉落到下面的小球的话,就需要一个if循环,得出了那些需要reset的小球的index之后才能够向下发送bang。
                          a1111394-1817-469d-8443-ed97ec68fc70-1654847441960.png
                          像这样直接在togEdge上面直接加上筛选条件的写法,我还是第一次看到。(我这里稍微尝试了一下,左边加了个bang)

                          1 条回复 最后回复 回复 引用 0
                          • First post
                            Last post
                          Powered by NodeBB | Contributors