我用团结来开发2D游戏。我使用了EasyTouch包。当左右键使用键码时,通过设置左侧的flag = 3
和右侧的flag = 4
来触发动画。但是,如果我使用操纵杆,左右两侧的动画都不起作用。有人可以帮我解决这个问题吗?非常感谢。
void Movement()
{
if(joystick.JoystickAxis.x<0)
{
//if (Input.GetAxisRaw("Horizontal")<0) {
anim.SetInteger("flag",3);
transform.Translate(Vector3.left*speed*Time.deltaTime);
}
if(joystick.JoystickAxis.x>0)
{
//if(Input.GetAxisRaw("Horizontal")>0) {
anim.SetInteger("flag",4);
transform.Translate (Vector3.right*speed*Time.deltaTime);
}
if(joystick.JoystickAxis.y<0)
{
anim.SetInteger("flag",1);
//if (Input.GetAxisRaw("Vertical")<0) {
transform.Translate (Vector3.down*speed*Time.deltaTime);
}
if(joystick.JoystickAxis.y>0)
{
anim.SetInteger("flag",2);
//if (Input.GetAxisRaw("Vertical")>0) {
transform.Translate (Vector3.up*speed*Time.deltaTime);
}
}
答案 0 :(得分:0)
您还可以为脚本使用Input.GetAxis(&#34; Horizontal&#34;)方法。但为此,您必须更改项目输入设置。要执行此操作请执行以下步骤:
现在尝试像这样测试你的脚本。
if (Input.GetAxisRaw("Horizontal")<0) {
anim.SetInteger("flag",3);
transform.Translate(Vector3.left*speed*Time.deltaTime);
}
您可以要求任何进一步的帮助。
答案 1 :(得分:0)
最后,我找到了答案:因为我把Movement()函数放在Update()中。这意味着每次我使用操纵杆时,它都会更新动画。因此,水平动画总是被垂直动画取代。
这是修改后的版本:
void运动()
{
如果(joystick.JoystickAxis.x&LT; -Mathf.Abs(joystick.JoystickAxis.y)){
anim.SetInteger(&#34;标志&#34;,3);
transform.Translate(Vector3.left 速度 Time.deltaTime);
}
如果(joystick.JoystickAxis.x&GT; Mathf.Abs(joystick.JoystickAxis.y)){
anim.SetInteger(&#34;标志&#34;,4);
transform.Translate(Vector3.right speed Time.deltaTime);
}
如果(joystick.JoystickAxis.y&LT; -Mathf.Abs(joystick.JoystickAxis.x)){
anim.SetInteger(&#34;标志&#34;,1);
transform.Translate(Vector3.down speed Time.deltaTime);
}
如果(joystick.JoystickAxis.y&GT; Mathf.Abs(joystick.JoystickAxis.x)){
anim.SetInteger(&#34;标志&#34;,2);
transform.Translate(Vector3.up speed Time.deltaTime);
}
}