首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android游戏开发-定制地图导致不同的活动

Android游戏开发-定制地图导致不同的活动
EN

Stack Overflow用户
提问于 2013-12-15 01:08:44
回答 2查看 99关注 0票数 2

我想创建一个自定义地图。它应该是或看起来像一张图片,但是根据用户单击的部分,它应该将用户移动到不同的位置(即启动不同的活动)。我已经看过几场比赛了,但我自己不知道该怎么做。

该部分的图片应该有非几何边界(显然,它将很容易用许多正方形图像)。可悲的是,我甚至不知道什么术语描述了我想做什么,所以我找不到任何有帮助的教程或讨论的主题。

例子:图片:http://i236.photobucket.com/albums/ff40/iathen/mapEx.png

  • 如果用户接触到紫色幻灯片,他应该被引导到activity_1
  • 如果用户接触到蓝色幻灯片,他应该被引导到activity_2
  • 如果用户接触绿色幻灯片,他应该被引导到activity_3。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-15 01:48:44

在我的经验中,有两种主要的(最常用的)方法来实现这一点。

第一个(我最喜欢的):从PNG获取数据

您应该将多个层写入画布。这些层构成了你的“区域”(图像中的蓝色、绿色、紫色)。要获得这些区域的数据,您可以从PNG(带有非航向透明)获取它,以便用您想要的任何内容编写画布。您必须存储来自用户的点击(非透明区域)的值。注意,这个值可以根据地图大小、屏幕分辨率、地图尺寸等进行缩放。

一旦您将这些层写入画布,您应该检查用户点击和存储区域的匹配。在这里,您应该考虑在代码中处理用户抽头的顺序。例如,在您的图像中,紫色层位于顶部,因此必须首先处理它,蓝色作为第二个,绿色作为最后一个。这样你就可以在更大的区域内有一个“岛”。

第二种方法:生成边界--可编程

我认为这个解决方案是不言而喻的。我所面对的唯一变化是,当曲面边界变得凌乱时,生成适当的方程是非常复杂的。

编辑:使用第一种方法的,您可以使用多个PNG来加载数据,或者使用单个PNG将数据编码成字节(即RGB值)。该由你来决定要实现哪一个。

希望能帮上忙!

票数 0
EN

Stack Overflow用户

发布于 2013-12-15 02:19:11

因为触摸屏本身并不十分精确,所以您也不需要对按钮进行碰撞检测。试图制作一个复杂的碰撞检测算法来检测这些奇怪形状中的触摸,这将是浪费时间。

由于您正在制作一个游戏,我想您应该知道如何处理自定义的触摸事件,以及画布(至少)。做你想做的事情有很多种方法,但是在具体的例子中,你链接到的图像是一种特例。

您可以在这三个圆点周围创建一个巨大的边界圆,然后检查用户是否在圆的范围内接触(即检查从触点到圆心的距离是否小于或等于半径)。一旦你确定它是,你就可以通过把它分成三个相等的部分来检查它落入的圆圈的哪个部分。需要一些数学,但不应该那么复杂。

这不是一个完美的解决方案,但应该足够好。尽管,你可能需要稍微改变按钮,这样它们就不会水平地伸展,否则一个圆圈就不太理想了。

就我个人而言,在我的游戏中,我总是有“节点”来表示游戏的视觉元素,比如按钮。我不会像您所做的那样使用大的图像,而是为每个按钮创建单独的图像,然后独立地检查它们与触摸事件的冲突。这样,我可以让每个按钮检查他们自己的边界圈,或者,如果绝对必要的话,我甚至可以为每个单独的按钮定制算法。

这些不是完美的解决方案。如果你想要一个像素完美的解决方案,你需要实现一些多边形碰撞检测算法。

需要考虑的一件事是屏幕大小和比率。您应该使用的唯一常量是百分比。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20590151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档