如何在2D游戏中用操纵杆旋转玩家的手臂?

时间:2016-05-25 16:32:12

标签: unity3d 2d-games touchscreen joystick

在桌面版中,我的角色的手臂会根据鼠标的移动而旋转。在移动版本中我需要相同的东西,但这次我需要一个操纵杆来旋转他的手臂。我怎么能这样做?

enter image description here

 //Here is my code, for rotating arm
 void Update()
{
    float horizontal = Input.GetAxis("Joy Y") * Time.deltaTime;
    float vertical = Input.GetAxis("Joy X") * Time.deltaTime;
    float rotZ = Mathf.Atan2(horizontal, vertical) * Mathf.Rad2Deg;
    transform.rotation = Quaternion.Euler(0f, 0f, rotZ); 
}

我已经改变了一些代码,现在玩家手臂正在旋转,但这次又出现了另一个问题。当我试图用操纵杆移动时,手臂正在做出意想不到的动作我认为操纵杆与鼠标混合在一起。我不知道如何分开它?

1 个答案:

答案 0 :(得分:1)

您制作 JoyStick ,然后使用JoyStick代码替换鼠标代码。

Unity拥有名为CrossPlatformInputManager的资产,可以做到这一点。你必须导入它并稍微修改它才能使用它。观看this以了解如何导入它。

现在,您可以将Input.GetAxisInput.GetAxisRaw功能替换为CrossPlatformInputManager.GetAxis("Horizontal")CrossPlatformInputManager.GetAxisRaw("Horizontal")

如果你让它工作,那么可以使用下面的代码使你的代码兼容移动和桌面。

#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBGL
//put your Input.GetAxis` and `Input.GetAxisRaw` code here
#elif UNITY_ANDROID || UNITY_IOS 
//Put your `CrossPlatformInputManager.GetAxis("Horizontal")` and `CrossPlatformInputManager.GetAxisRaw("Horizontal")`. here
#endif