工作笔记——TOOLTIPS解决思路和射线

这次老大要求我做一个招式对比界面

要求

有敌我双方的技能栏,每个技能长度为1,2,3,基本要求就是当长按其中一个技能的时候,高亮当前技能和它匹配的那个技能。

高亮思路

高亮的第一反应是用挖空黑色阴影来做,然后发现这个有两个问题

1. 挖空的地方是不确定的,但是这个可以通过阴影尽量大,然后移动阴影来使空缺对应高亮位子来解决。

2. 挖空的形状是不确定的,这个就比较难搞了,暂时放弃了

挖空图片的参考链接:http://www.unitymanual.com/thread-35475-1-1.html?_dsign=8a6323fb


另外一个解决方案就是改变需要高亮图片的深度,使其在阴影上方显示。

这个比较简单,就是实现起来比较麻烦,因为一个gameobject里面有多个spirt,要分别改买个spirt的深度,然后用完了再改回去。


触发事件思路

好麻烦,技能的点击都是封装好了的,但是我又不能直接用,比如一个长度为2的技能,要求我点击前半部分和后半部分响应不同事件,但是封装的碰撞是连在一起的,我不可能去把原来的改了,也不能用两个新的分开的碰撞放在上面因为会覆盖掉原来的(我居然试了,浪费一上午)。所以现在唯一的解决方案就是处理鼠标点击了。
通过
if (Input.GetMouseButton(0))
	Input.mousePosition;
获得鼠标位子,但是这个仅仅是鼠标在屏幕上的像素位子,也就是一个二维坐标,代表屏幕上的一个点,跟unity里的世界没有任何关系,所以这时候需要通过射线投射到世界中。
Ray ray = Camera.current.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
然后hit.point就是碰撞点的坐标,通过比较这个点的y坐标和当前被点击的技能的y坐标来判断点的是什么部位。。
比如 hit.point.x > transform.position.x + c, 就说明点击的后半部分。。
然后找一下常数使他看起来精确一点。。
用同样的方法,比较y方向坐标来判断是敌方技能还是我方技能

真的好麻烦,做了一天还有bug,而且也不优美,不过能解决问题就行了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值