上次提到如何使用官方範例製作的虛擬搖桿
這次要針對虛擬搖桿的移動區塊及隨機生成做改良
首先延續上次的話題 Unity3D - 製作虛擬搖桿 與 使用Input.GetAxis (一)
如果要修改移動範圍為圓形,我們必須用到 Vector3.ClampMagnitude
大體上來說只要修改joystick.cs中的OnDrag()方法,將拖曳搖桿時得到的座標數據返回並修改成圓形放射狀的範圍
public void OnDrag(PointerEventData data)
{
Vector3 newPos = Vector3.zero;
if (m_UseX)
{
int delta = (int)(data.position.x - m_StartPos.x);
//delta = Mathf.Clamp(delta, - MovementRange, MovementRange);
newPos.x = delta;
}
if (m_UseY)
{
int delta = (int)(data.position.y - m_StartPos.y);
//delta = Mathf.Clamp(delta, -MovementRange, MovementRange);
newPos.y = delta;
}
transform.position = Vector3.ClampMagnitude(
//new Vector3(m_StartPos.x + newPos.x, m_StartPos.y + newPos.y, m_StartPos.z + newPos.z),
new Vector3(newPos.x , newPos.y , newPos.z) ,
MovementRange
)+ m_StartPos;
UpdateVirtualAxes(transform.position);
}
這樣就可以將範圍修改呈放射狀了,具體其實這邊是參考了Youtube的Devin Curry所發布的影片,有興趣深入瞭解可以觀看影片
接著是如何讓座標在碰觸的點上做動態生成,手點出現、手離開消失的效果
因為有約而時間要到了,所以特別水的下一篇繼續
感謝觀看,若你能夠留下一些建議與感想
都會成為我寫文章的動力,感謝!!