做了一个 Physics Piano 小例子
-
VL 中的 Stride3d 真没有碰撞检测?!为了实现效果,用了 3D 的 Collision...估计性能开销会很大吧?
MyPianoKey 就是那几个琴键(方块)的类,里面有 Highlight 和 Play Note;
MyPianoBall 就是红色的小球;
源文件在此 My Physics Piano-3.vl
-
@青-Joker 更新了一下,把 For Each 放在外边了,这样更好理解一些……
源文件在此 My Physics Piano-4.vl
-
此回复已被删除! -
@青-Joker
牛啊牛啊
但是我没看懂这三个节点是怎么出来的 -
@买买提mmt 哈哈,也是蒙出来的,我大概看了一下 Stride3d 的引擎,人家是有碰撞检测的,可能是 VL 并没有引入这些功能吧;所以就用了这个 3D.Collision 来临时解决问题……但应该不完美,可能会有性能方面的问题……
Transform 节点是用来读取 Entity 的 Transform 信息的;读出来的是一个 TransformComponent;然后再用 TransformComponent 的相关节点来获取更详细的信息,我这里用的是读取 Position;读取到 Position 后,用来生成一个 Sphere(join);因为我用的碰撞检测的 BoxInstersectsSphere 需要这个……
-
蒙都能蒙出来,换了我肯定想不到
-
@青-Joker
我之前还稍微看了一下VR的官方示例,感觉如果你的小球能用VR手柄扔上去会更好玩 -
我还有个问题:你这边是怎么筛选已经掉落出界的小球的。因为按照我原来的beta思维,你这边的< -4之后连了一个or,和resetAll在一起。然后居然这个or可以把两种效果分开,左边是可筛选、右边就是所有全部重置。
-
@买买提mmt beta 我重来没用过,不知道 beta 里面是啥样的;Gamma 这个是因为小球的 Reset 是定义在 MyPianoBall 中的一个叫 DoReset 的方法,它监听一个 Bang 事件;所以无论这个 Bang 是来自哪,只要 Bang 了就 Reset;这个也是 Class 的好处吧
-
@买买提mmt 如图
-
@青-Joker
是,可能是我对class还是不太了解。在我的印象里如果要筛选出那些掉落到下面的小球的话,就需要一个if循环,得出了那些需要reset的小球的index之后才能够向下发送bang。
像这样直接在togEdge上面直接加上筛选条件的写法,我还是第一次看到。(我这里稍微尝试了一下,左边加了个bang)