我正在创建一个迷宫游戏并且我正在使用我的Android控件延迟。我已经将计算机控件移动到前面并左右转动并使用input.getaxis进行跳转。现在在android上我创建了有效的按钮但不是我想要的。它可以跳跃并转动我想要的但它没有正确移动。有两个问题,一个是当我点击它移动了一点然后我需要再次点击但我想要持有它将继续移动第二个问题是,当我转动角色不移动核心方式它总是在x轴与input.getaxis一切都很完美,但我需要一些适合androdid的东西,这是我的代码:
using UnityEngine;
using System.Collections;
public class PlayerMovement : MonoBehaviour {
public float speed;
public float speedj;
Rigidbody rb;
static Animator anim;
void Start()
{
rb = GetComponent<Rigidbody>();
anim = GetComponent<Animator>();
}
public void Walk ()
{
anim.SetTrigger ("Walk");
rb.velocity = new Vector3 (0,0,7f);
}
public void Left ()
{
transform.Rotate(0,-90f,0);
}
public void Right ()
{
transform.Rotate(0,90f,0);
}
public void Jump ()
{
anim.SetTrigger ("Jump");
rb.velocity = new Vector3 (0,4f,0);
}
public void StopVelocity ()
{
rb.velocity = Vector3.zero;
transform.Translate(0,0,0);
}
void FixedUpdate ()
{
float x = Input.GetAxis ("Horizontal") * Time.deltaTime * speed;
float z = Input.GetAxis ("Vertical") * Time.deltaTime * speed;
transform.Translate (0,0,z);
transform.Rotate (0,x,0);
if(Input.GetKey(KeyCode.Space))
{
anim.SetTrigger ("Jump");
rb.velocity = new Vector3 (0,speedj,0);
}
}
}
所以这就是用于计算机的fixedUpdate函数,其他用于android的按钮我正在使用事件触发器进行指针上下事件请帮助我更改代码,以便它适用于android,就像它适用于Input一样。 getAxis for computer thanks!
答案 0 :(得分:0)
“当我点击它移动一点然后我需要再次点击但我想要按住它会继续移动。”
在这里使用EventTrigger应该是最佳方式。看看OnPointerDown();应该为每一帧调用该函数。您应该将EventTrigger附加到按钮,以便它可以在手机上使用。
“当我转动角色时不会移动核心方式。”
尝试使用您的Local Transforms Forward进行移动。即Transform.Forward()。它将允许您向前移动到您之前设置的方向,Forward始终是Normalized Vector3。按照你的方式移动将使用世界轴,你的旋转根本不重要。