起初是想到制作一款武侠门派经营的游戏,后面看到b站上有一位开发了一款叫《迷走:二律背反》的游戏,游戏机制很简单,左右滑动卡牌相当于对当前事件做了一次选择,而这个选择只有两种。这种机制相当简单,于是我想了一下其实经营游戏也有点类似于在有限选项里做出选择,那为什么不也做一个这样的简单机制然后通过事件驱动的游戏呢?
简单解析这个游戏的实现,这个卡牌的滑动是核心机制之一,另一个则是构建事件的出现和影响。那么首先先来实现这个滑动机制。
这个滑动机制分为以下几个部分:
基于这几个特点,我去找攻略,前人的智慧总是伟大的。我找到了一位高手关于拖拽移动的讲解,他称之为swipe:https://www.youtube.com/watch?v=mcKhZPBLhLo
他的代码非常有参考性:
通过他的代码可以解决拖拽卡牌跟着移动,和判定拖到一定距离卡牌才会被滑走的生效机制。
随之而来的是另一个问题:他的判定swipe是一次性的,即当我移动鼠标到了一定距离触发了,当我想反悔又移回来的时候,swipe已经发生了,这要如何解决呢?
游戏可以捕捉到当我鼠标松开的一瞬间,但是如果我想通过这一瞬间的位置来判断的话,对于拖拽中的定义则不好解释了,因为严格来说,松开的这一瞬间,已经不再是拖拽中了,自然也不适用于上面的swipe判定。
于是我想到了,其实判定是否swipe和swipe向何方完全是可以在拖拽过程中实时更新,我们只要维护好一个特定的值,在这我使用-1(朝左)、0(中间位)、和1(朝右)来解决,然后在松开的一瞬间,对该值进行判定,如果中间位则复原,其他情况就根据方向进行移动动画的释放。
这样一来,就解决了整个卡牌的滑动问题,也就是说核心机制之一已经完成了。
当然,这个还有很多细节可以做,也可以进行优化,