obsidian/笔记文件/2.笔记/游戏交互相关逻辑.md
2025-03-26 00:02:56 +08:00

2.7 KiB
Raw Blame History

游戏的交互有两种类型,分别是点击和滑动

!Pasted image 20230717162153.png

点击的时候,点击相关的坐标位置作为唯一标准,进行传参,去拿到实体

!Pasted image 20230717162244.png

对应的组件是这个

!Pasted image 20230717162323.png

判断的先决条件,还有一个布尔,是否可移动

!Pasted image 20230717162516.png

在前面生成球体的时候已经把可以点击的球体这个相关布尔设置为true的了

!Pasted image 20230717162547.png

先决条件满足之后,就是具体的业务逻辑了,先整一个最终点击的点,然后第二个点跟最终点击的点,进行比较,看是否可以消除(消除相关是后面的逻辑)

!Pasted image 20230717162641.png

滑动的相关逻辑,如果被触发,是会有相关打印信息的 例如这里是向下滑动了一下

!Pasted image 20230717162756.png

对应的是这个

!Pasted image 20230717162819.png

这是游戏交互的逻辑脚本

!Pasted image 20230717165431.png

更新函数,这里是触发点击交互的 参考Entitas——ReactiveSystemEntity

!Pasted image 20230717165511.png

!Pasted image 20230717165533.png

!Pasted image 20230717165541.png

这里是滑动交互的 这里有一个相对复杂点的,嵌套 三元运算符

!Pasted image 20230717165632.png

!Pasted image 20230717165650.png

前面的打印提示也是在这里被触发

!Pasted image 20230717165734.png

滑动的话是根据前面业务逻辑得到的方向去进行x和y的相关处理

!Pasted image 20230717165941.png

然后还会有限制x和y的阈值范围不会超出gameGameBoard的x和y的数量限制

!Pasted image 20230717170015.png

这里是区域限制的,相关声明定义

!Pasted image 20230717170342.png

而且只能是滑动一个

!Pasted image 20230717170229.png

这个是设计思路流程图

!Pasted image 20230717171953.png

回到点击的逻辑,这里前面的条件都满足,就会触发这个函数,分别是点击前后的两个元素

!Pasted image 20230717173031.png

可以看到函数内部是修改了这个Index索引

!Pasted image 20230717173159.png

然后实体对应的view脚本是这个

!Pasted image 20230717173225.png

是有相关的监听

!Pasted image 20230717173254.png

触发的监听函数调用了DOMove函数进行位置变更就好

!Pasted image 20230717173310.png

所以,点击就可以换位置了,功能实现

继续补充设计思路,这里应该是需要整一个容器去存储

!Pasted image 20230717173620.png

运动交换系统,是这个,然后在这里,初始化创建

!Pasted image 20230717174519.png