制作一款打飞机游戏39:鼠标控制

绘制敌人指示器

接下来,我想在时间线上绘制敌人指示器,以便更直观地看到敌人的生成情况。我调整了指示器的位置,使其与界面上的按钮相匹配。这虽然增加了一些工作量,但也让界面看起来更加整洁。

解决敌人重叠问题

然而,当我滚动时间线时,发现了一个问题:如果两个敌人在相近的时间生成,它们在时间线上会显示为重叠。这是因为我们在绘制时没有考虑到敌人的生成位置。为了解决这个问题,我添加了一个系统来计算每个敌人的生成位置,并在时间线上相应地绘制它们。

按钮功能的实现

现在,我想让按钮真正工作起来。首先,我想通过键盘按下按钮来执行操作。但随后,我还会添加鼠标控制功能,让用户可以同时使用键盘和鼠标来操作界面。

添加敌人按钮

我创建了一个名为"添加敌人"的按钮,并为其编写了相应的更新函数。现在,当我按下键盘上的"X"键时,会弹出菜单,然后我可以选择"添加敌人"命令来生成一个新的敌人。不过,目前我还不能移动这些敌人,也无法与它们进行交互。

实现鼠标控制

接下来,我想让鼠标能够选择不同的按钮。我遍历了所有按钮,并检查鼠标是否悬停在某个按钮上。如果是的话,就改变当前选中的按钮。为了实现这个功能,我编写了一个鼠标碰撞检测函数来判断鼠标是否与按钮发生了碰撞。

经过一番调试,我终于让鼠标能够悬停在按钮上并触发相应的操作了。随后,我还添加了左键点击功能,让用户可以通过点击按钮来执行操作。

敌人交互功能的实现

现在,我想让用户能够与敌人进行交互。例如,当用户点击某个敌人时,可以删除它或者移动它。为了实现这个功能,我为每个按钮添加了一个属性来存储与之关联的敌人信息。

当用户点击"编辑敌人"按钮时,程序会查找与之关联的敌人并删除它。同时,我还添加了一个高亮显示功能,当用户悬停在某个敌人按钮上时,会在游戏中高亮显示对应的敌人。

优化界面显示

最后,我想进一步优化界面的显示效果。例如,当敌人生成在屏幕外时,用户无法看到它。为了解决这个问题,我在敌人生成位置绘制了一些线条来指示敌人的生成方向。这些线条的颜色和样式也经过了一番调试才最终确定下来。

复制代码
function domouse()
 mousex=stat(32)
 mousey=stat(33)
 
 if stat(34)==0 then
  clkwait=false
 end
 clkl=false
 clkr=false
 if not clkwait then
  if stat(34)==1 then
   clkl=true
   clkwait=true
  elseif stat(34)==2 then
   clkl=true
   clkwait=true  
  end
 end
 
end
相关推荐
Luna-player6 小时前
黑布淡入淡出效果
经验分享·游戏
百锦再16 小时前
重新学习Vue中的按键监听和鼠标监听
javascript·vue.js·vue·计算机外设·click·up·down
TESmart碲视1 天前
HKS201-M24 大师版 8K60Hz USB 3.0 适用于 2 台 PC 1台显示器 无缝切换 KVM 切换器
单片机·嵌入式硬件·物联网·游戏·计算机外设·电脑·智能硬件
景行产品分享1 天前
2025年游戏鼠标推荐,游戏鼠标推荐,打CSGO(罗技、雷蛇、卓威、ROG、漫步者、赛睿、达尔优)
计算机外设
jubobolv3691 天前
[深度学习环境踩坑记录]ubuntu22.04安装RTX3060驱动,黑屏、桌面只有壁纸和鼠标,一顿折腾
计算机外设·持续部署
翻滚吧键盘1 天前
查看linux中steam游戏的兼容性
linux·运维·游戏
m0_552200822 天前
《UE5_C++多人TPS完整教程》学习笔记40 ——《P41 装备(武器)姿势(Equipped Pose)》
c++·游戏·ue5
vfvfb2 天前
定时点击二次鼠标 定时点击鼠标
计算机外设·自动点击·定时点击鼠标·倒计时点击鼠标·定时点击
xiaolang_8616_wjl2 天前
c++游戏_小恐龙(开源)
开发语言·数据结构·c++·算法·游戏·开源·c++20
点金石游戏出海3 天前
每周资讯 | Krafton斥资750亿日元收购日本动画公司ADK;《崩坏:星穹铁道》新版本首日登顶iOS畅销榜
游戏·ios·业界资讯·apple·崩坏星穹铁道