我想找出用于移动2D游戏的触控控制的最佳练习方法,特别是拖拽用于突破/ arkanoid风格游戏的划桨。如果没有简单的内置Unity工具可以做到这一点会让我感到惊讶,因为我认为这将成为移动游戏普及的标准功能。 任何建议或教程链接,特别是拖动游戏对象,将不胜感激。感谢。
答案 0 :(得分:0)
我的建议是使用像这样的脚本使用Unity UI功能(在Unity 4.6中引入):
public class DragControl : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
private bool m_Used;
private Vector3 m_MouseStartPosition;
private Vector3 m_ItemStartPosition;
public void Start()
{
m_Used = false;
}
public void Update()
{
if(m_Used)
{
GetComponent<RectTransform>().anchoredPosition = new Vector2(m_ItemStartPosition.x + (Input.mousePosition.x - m_MouseStartPosition.x), m_ItemStartPosition.y + (Input.mousePosition.y - m_MouseStartPosition.y));
// or you can set the y value to m_ItemStartPosition.y only if you don't want the paddle to move on Y axis
}
}
public void OnPointerDown(PointerEventData eventData)
{
m_Used = true;
m_MouseStartPosition = Input.mousePosition;
m_ItemStartPosition = GetComponent<RectTransform>().anchoredPosition;
}
public void OnPointerUp(PointerEventData eventData)
{
m_Used = false;
}
}
要实现此目的,您必须启用UI项目光线投射(选中“Raycast Target”),并且不会阻止光线投影覆盖UI图层中的项目。
另请注意,如果您不需要,可以使用Input.multiTouchEnabled = false;
禁用mutli touch输入。
答案 1 :(得分:0)
一个简单的解决方案是导入现在标准(Unity 5?)&#34; DragRigidbody&#34;脚本并将其附加到您的游戏对象。只要确保你的对象附有一个RigidBody组件(我认为你的桨对象已经存在)。