如何在Update(更新)中将此“动作”(带键盘的水平RotateAround运动)切换到Android平台,我的意思是可触摸的动作(在触摸屏上工作)。
我试图将“ Mouse X”或“ Mouse Y”而不是“ Horizontal”与鼠标和触摸屏配合使用,但是使用的方式是错误的。我知道这是错误的,无法播放。
public class Player : MonoBehaviour {
public float moveSpeed = 350f;
float movement = 0f;
// Update is called once per frame
void Update()
{
movement = Input.GetAxisRaw("Horizontal");
//movement = Input.GetAxisRaw("Mouse X");
//movement = Input.GetAxisRaw("Mouse Y");
}
private void FixedUpdate()
{
transform.RotateAround(Vector3.zero, Vector3.forward, movement * Time.fixedDeltaTime * -moveSpeed);
}
}
答案 0 :(得分:0)
您需要不了解触摸屏不是一回事。 您可以决定使用屏幕,虚拟操纵杆,按钮或其他功能。 Input.GetAxis和GetAxisRaw只是告诉Unity使用输入默认系统设置中的内容并将其用作输入。 https://docs.unity3d.com/Manual/ConventionalGameInput.html
因此,例如,当您使用Input.GetAxis(“ Horizontal”)时,如果在Unity Input中将W设置为正输入,将S设置为负输入,则Unity将使用键盘以及与Input.GetKeyDown等效的输入并获取按下时的W值。由于键盘值始终为1或0,因此使用GetAxis或GetAxisRaw将会是相同的(因为GetAxisRaw总是获取1或0,但是使用键盘时,您总是会获取1或0)...真正的操纵杆将从中获取值-1到1,其中0表示“不使用操纵杆”,1表示最大正值,-1表示最大负值。
例如,要替换键盘行为,您可以使用Unity UI系统创建2个按钮,如果它们被按下(有许多默认的方法可以判断是否按下了UI按钮,例如OnButtonDown方法),会将floatUp值设置为1f,0f(如果ButtonUp ...),则您将能够像使用默认输入系统一样获得0f或1f,您将从虚拟按钮获得正1f值,而不是获得正输入值通过W按钮。
如果您想要一个介于0f到1f之间的值(例如0.4),则需要一个虚拟操纵杆或类似的操纵杆。 您可以使用此简短教程来制作一个: https://youtu.be/uSnZuBhOA2U
主要要了解的是,您不能使用默认的Input系统用于触摸屏,因此您应该从头开始创建该系统,然后就可以像默认Input系统一样使用它(只是需要使用其他类)决定)。