我想找出用于移动 2D 游戏的触摸控制的最佳实践方法是什么,特别是为突围/打砖块风格的游戏拖动一个拨片。如果没有简单的 Unity 内置工具来执行此操作,我会感到惊讶,因为鉴于手机游戏的流行,我认为这将是一个标准功能。任何建议或教程链接,尤其是拖动游戏对象,将不胜感激。谢谢。
问问题
1486 次
2 回答
0
一个简单的解决方案是导入现在的标准(Unity 5?)“DragRigidbody”脚本并将其附加到您的游戏对象。只需确保您的对象附有 RigidBody 组件(我假设您的桨对象已经有)。
于 2016-10-26T00:55:48.540 回答
0
我的建议是使用如下脚本使用统一 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;
.
于 2016-10-24T08:21:48.287 回答