我想找出用于手机2D游戏的触摸控制的最佳实践方法,特别是在breakout/arkanoid类型游戏中拖动桨。如果Unity中没有简单的内置功能来做到这一点,我会感到惊讶,因为我本以为考虑到手机游戏的流行,这应该是一个标准功能。任何建议或教程的链接,特别是拖动游戏对象,将非常感激。谢谢。
我的建议是使用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项目光线投射(保持"光线投射目标"勾选),并且没有任何东西阻止光线投射在UI层中的项目上。
还请注意,如果你不需要它,你可以禁用多点触摸输入使用Input.multiTouchEnabled = false;
。
一个简单的解决方案是导入现在的标准(Unity 5?)"DragRigidbody"脚本并将其附加到你的游戏对象。只要确保你的对象有一个RigidBody组件附加到它(我假设你的桨对象已经有了)。