工作筆記——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,而且也不優美,不過能解決問題就行了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章