【问题标题】:Unity Player Movement Not WorkingUnity 玩家移动不起作用
【发布时间】:2017-04-13 16:14:14
【问题描述】:

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

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

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
}
    }

【问题讨论】:

  • 这是大错特错。在更新函数中反复启动Move协程.....你想像在FPS游戏中一样移动吗?
  • 我试图让它像 2D 游戏一样移动。为了争论,让我们说像口袋妖怪:)
  • 好的,我明白了。如果是这样的话,这可能没问题。你如何确定停止移动/目标位置?我想你应该解释一下玩家什么时候开始移动?也许当鼠标被点击的时候?
  • 我对 Unity 还很陌生,所以我不知道我是否能够详细解释所有内容。基本上我在网上跟着一个例子。在示例中,解释的人可以用箭头移动它,因为我听到咔哒声......所以,我不知道他做了什么,因为他没有分配任何特定的键。或者我错过了什么,它应该工作?老实说,我真的很困惑。
  • 尝试使用GetKeyDown() 而不是 Input.GetAxis("Horizo​​ntal"),作为对您的建议,通过尝试自己的代码并在每次遇到困难时访问文档来学习统一性。在我看来,从教程中复制代码是没有帮助的

标签: c# unity3d


【解决方案1】:

改变

void Update()
{
    if (isMoving)
    {

void Update()
{
    if (!isMoving)
    {

否则,在每次更新时,您都会检查您的 isMoving 变量,如果它为假,则什么也不做。 isMoving 唯一可能变为真的地方是你的 Move 协程,但它只能从 Update 启动,因为 isMoving 是假的,所以它不会做任何事情。

【讨论】:

  • 谢谢 这实际上是有道理的。我只遇到了一个问题:如果我按箭头移动它,它就会消失 o.O 对此有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多