【发布时间】: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("Horizontal"),作为对您的建议,通过尝试自己的代码并在每次遇到困难时访问文档来学习统一性。在我看来,从教程中复制代码是没有帮助的