如何设置玩家飞机根据触屏位置移动

我们可以看到飞机正在背景图中不断向上飞行的效果。但是我们需要玩家飞机根据我们触摸屏幕的位置移动。这时候我们就需要通过事件的设置来帮助我们控制玩家飞机的移动。

为了更好方便我们管理事件,我们可以在事件表中添加事件组。点击分组按钮,修改名字为 玩家操作。我们可以把关于玩家飞机的事件都统一放在此事件组中,这有利于我们制作游戏后测试时产生逻辑问题时,可以快速定位到是哪个对象的事件有逻辑问题。进而进行修改。

选中玩家操作事件组,点击+ 事件按钮,添加一条新的事件。


点击上方按钮(或在对象库的抽象对象里选择“触屏操作”也可)

设置事件条件为“正在触屏时”(此条件时判断当前正在触摸屏幕时为真,即当我们触摸屏幕时就会触发此条件后的动作)

设置动作(玩家飞机向触摸屏幕的位置移动),在舞台上选择玩家飞机或对象库选择玩家飞机,选择“朝某角度移动”动作。


角度的设置:这时我们需要使用到工具内部函数angle(),这个函数作用是计算两组坐标点的角度,即我们需要的飞机向触屏位置的角度移动(即angle(玩家.x,玩家.y,触屏操作.x,触屏操作.y))。

距离的设置:600*dt(dt是场景从上一帧到这一帧的时间)


完成设置后我们预览看一下效果。

这时候我们可以看到当触摸屏幕时,玩家飞机会不断向我们触摸的位置移动,但是当玩家飞机移动到触摸的位置时,玩家飞机在不停的抖动,这是因为当我们触摸屏幕的时候,还在不断触发触摸屏幕的条件,所以这个时候我们需要添加一个复合条件,当玩家飞机的位置与触摸位置的距离>10个像素的时候,我们才让玩家飞机向触摸位置的方向移动。

左键点击之前设置的事件选中,左键点击上方的系统按钮,在条件中双击“比较两值”
因为系统中有两个比较两值条件,这里我们选的是通用下的比较两值条件。

值1 设置:abs(distance(触屏操作.X,触屏操作.Y,玩家.X,玩家.Y))。这里使用两个内部函数abs(),distance()。
abs()作用是求绝对值。
distance()作用是计算两点间的距离。
比较方式: >大于
值2设置:10

设置完成后,我们再次预览,这次我们可以发现飞机移动到触摸位置时,不会再发生抖动了,这时候玩家飞机根据触摸位置移动就做好了。