游戏的交互有两种类型,分别是点击和滑动
![[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——ReactiveSystem<Entity>]]
![[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]]