制作一款打飞机游戏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
相关推荐
程序员-Benothing7 小时前
H3 Max开放世界RPG:AI原生游戏,从“能生成“到“能玩“差了多远
游戏·ai-native
CoderYanger17 小时前
A.每日一题:1140. 石子游戏 II
java·程序人生·算法·leetcode·游戏·职场和发展·深度优先
智塑未来17 小时前
2026年电竞鼠标十强解析:镁合金如何重塑竞技体验
计算机外设
无别05219 小时前
【做游戏】做完游戏Demo后没地方发布?
游戏·玩游戏
lilian23319 小时前
HarmonyOS 7 新特性(二十九)|游戏伴随服务:悬浮协作与质量降级
游戏·语音识别·harmonyos
人民广场吃泡面20 小时前
DLSS 5 深度解析:当 AI 学会“创造”画面,实时游戏渲染迎来“GPT 时刻”
人工智能·gpt·游戏
学习星球1 天前
AI 一句话生成 3D 游戏世界:腾讯 HY-World 2.0 开源深度解析与本地实战
开发语言·人工智能·游戏·3d·ai·课程设计·ai编程
励志不掉头发的内向程序员1 天前
LibreCAD 2D架构】从鼠标点击到屏幕像素:LibreCAD绘图架构全链路解析之鼠标事件与RS_ActionDrawLine
c++·qt·学习·架构·计算机外设
乌萨达1 天前
梦幻新诛仙轻享电脑版怎么玩?模拟器安装与设置指南
游戏·安卓模拟器·雷电模拟器
qq_369224332 天前
ddraw.dll丢失是什么原因引起的?老游戏运行报错,多种可行修复手段汇总分享
windows·游戏·dll·dll修复·dll丢失·dll错误