查看: 1201|回复: 1
打印 上一主题 下一主题

如何用梯形作按钮?

[复制链接]

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2013-4-15 17:39:45 |只看该作者 |倒序浏览
现在我想用GUItexture来制作游戏按钮,但是如果我的按钮是不规则图形,如圆形,梯形,那么调用OnMouseEnter这些方法的时候,在透明的地方就已经触发了这个按钮,请问有什么办法解决  

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

2206

主题

2

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
32449
精华
23

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2013-4-15 17:40:01 |只看该作者
我有个可行的方案,自己用过了,分享一下。
我用GUI.DrawTexture来画按钮的。
假设是圆形,我计算鼠标点相对圆形中心的距离是否小于圆的半径,如果小于圆的半径,那么鼠标就在圆内。
假设是多边形的情形,可以考虑把多边形认为是多条直线围合的结果,只要某个点在所有围合多边形的直线靠近多边形的一侧,那么这个点就必然在多边形内(我勒个去的,这话怎么说的这么绕啊),一个点在一条水平线或者竖直线的一侧非常好判断,不说了,如果是斜线,可以以某个点为基准,比如说屏幕左上角的点为基准吧,把鼠标输入转换成相对于这个基准的x和y,先列出围合该多边形的每条斜线的公式,一般类似y = a * x + b这种情形,如果y > a * x + b,那么该点就在这条直线的下方,如果y > a * x + b,那么该点就在这条直线的上方,如果y = a * x + b,那么该点就在这条直线上,你判断点在直线的左右也可以,只是我个人习惯判断点在直线的上下,总之,最后每条线都判断过了就可以了。
不知道说明白了没有,希望能对你用帮助。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-15 23:05 , Processed in 0.419956 second(s), 31 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部