Unity Player运动不起作用

时间:2017-04-13 04:18:19

标签: c# unity3d

我有一个脚本来移动我的角色(玩家) 脚本应该没问题,并且没有任何错误,虽然当我按下播放时我尝试使用箭头并且它不起作用而且我不知道为什么。

这是代码。感谢您给我的任何帮助,谢谢

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{

Direction currentDir;
Vector2 input;
bool isMoving = false;
Vector3 startPos;
Vector3 endPos;
float t;

public float walkSpeed = 3f;

// Update is called once per frame
void Update()
{

    if (isMoving)
    {
        input = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
        if (Mathf.Abs(input.x) > input.y)
            input.y = 0;
        else
            input.x = 0;

        if (input != Vector2.zero)
        {
            StartCoroutine(Move(transform));
        }
    }

}

public IEnumerator Move(Transform entity)
{

    isMoving = true;
    startPos = entity.position;
    t = 0;

    endPos = new Vector3(startPos.x + System.Math.Sign(input.x), startPos.y +
        System.Math.Sign(input.y), startPos.z);

    while (t < 1f)
    {
        t += Time.deltaTime * walkSpeed;
        entity.position = Vector3.Lerp(startPos, endPos, t);
        yield return null;
    }

    isMoving = false;
    yield return 0;

}


enum Direction
{
    North,
    East,
    South,
    West
}
    }

1 个答案:

答案 0 :(得分:2)

更改

void Update()
{
    if (isMoving)
    {

void Update()
{
    if (!isMoving)
    {

否则,在每个Update上,检查isMoving变量,如果为false则不执行任何操作。 isMoving唯一可以成为真正的地方是你的Move协程,但它只能从Update启动,因为isMoving是假的,所以没有做任何事情。