2017-04-13 7 views
0

私はキャラクター(プレイヤー)を移動するスクリプトを持っています 私はプレイを押すと矢印を使用しようとすると動作しませんが、スクリプトは問題なく、エラーもありません。どうしてか分かりません。Unity Playerムーブメントが動作しない

ここにコードがあります。私はそれがfalseの場合、各アップデートにあなたのisMoving変数をチェックして、何もしない、それ以外の場合は

void Update() 
{ 
    if (!isMoving) 
    { 

に変更

void Update() 
{ 
    if (isMoving) 
    { 

おかげ

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

これは間違っています。更新機能で「移動」コルーチンを繰り返し開始..... FPSゲームのように移動しようとしていますか? – Programmer

+0

私はそれを2Dゲームのように動かそうとしています。引数のために、ポケモンのように言うことができます:) –

+0

わかりました。この場合、これは問題ありません。あなたは移動/目的地の位置をどのように停止するかを決定しますか?プレイヤーがいつ動き出すか説明しておくべきだと思いますか?たぶん、マウスをクリックしたとき? – Programmer

答えて

2

、あなたは私を与えることができます任意の助けに感謝します。 isMovingが真となる唯一の場所は、あなたのMoveコルーチンですが、isMovingがfalseであるため何もしないUpdateからしか起動できませんでした。

+0

ありがとう実際には意味があります。私が直面したただ1つの問題:矢印を押して移動すると、それは消えてしまいます。 –

関連する問題