Unity3D - 製作虛擬搖桿 與 使用Input.GetAxis (二)

上次提到如何使用官方範例製作的虛擬搖桿

這次要針對虛擬搖桿的移動區塊及隨機生成做改良

首先延續上次的話題 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);
}

這樣就可以將範圍修改呈放射狀了,具體其實這邊是參考了YoutubeDevin Curry所發布的影片,有興趣深入瞭解可以觀看影片

接著是如何讓座標在碰觸的點上做動態生成,手點出現、手離開消失的效果

因為有約而時間要到了,所以特別水的下一篇繼續

 


感謝觀看,若你能夠留下一些建議與感想
都會成為我寫文章的動力,感謝!!