私はキャラクター(プレイヤー)を移動するスクリプトを持っています 私はプレイを押すと矢印を使用しようとすると動作しませんが、スクリプトは問題なく、エラーもありません。どうしてか分かりません。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
}
}
これは間違っています。更新機能で「移動」コルーチンを繰り返し開始..... FPSゲームのように移動しようとしていますか? – Programmer
私はそれを2Dゲームのように動かそうとしています。引数のために、ポケモンのように言うことができます:) –
わかりました。この場合、これは問題ありません。あなたは移動/目的地の位置をどのように停止するかを決定しますか?プレイヤーがいつ動き出すか説明しておくべきだと思いますか?たぶん、マウスをクリックしたとき? – Programmer