游戏交互相关逻辑.md 2.7 KB

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

![[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]]