解决  无法识别Vector2

RandDGames

新成员
已加入
2021年1月6日
留言内容
3
编程经验
Beginner
大家好,

主要初学者,如果这看起来很痛苦,我深表歉意。

我正在按照一个教程让玩家精灵来回走动,他们使用了Vector2却没有问题,但是当我在Visual Studio中键入它时却无法识别它。我一直遵循本教程,并拥有此代码。我发现的唯一一件事可能是我没有使用正确的名称空间,但似乎使用的是与本教程相同的名称空间,所以现在我都感到困惑。

任何和所有帮助表示赞赏。
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerController : MonoBehaviour
{
public float moveSpeed;

public bool isMoving;
private Vector2 input;

private void Update()
{
if (!isMoving)
{
input.x = input.GetAxisRaw("Horizontal");
input.y = input.GetAxisRaw("Virtical");

if (input != Vector2.zero)
{
var targetPos = transform.position;
targetPos.x += input.x;
targetPos.y += input.y;

StartCoroutine(Move(targetPos));
}
}
}
IEnumerator Move(Vector3 targetPos)
{
isMoving = true;

while ((targetPos - transform.position).sqrMagnitude > mathf.Epsilon)
{
transform.position = Vector3.MoveTowards(transform.position, targetPos, moveSpeed * Time.deltaTime);
yield return null;
}
transform.position = targetPos;

isMoving = false;
}
}
没有人有任何想法导致我从头开始同样的问题,甚至尝试使用System.Collections.Numeric尝试不同的教程和同样的问题。还是行不通。请帮忙。我想我会提到我认为它是Vector2的原因,因为每次使用Vector时,它都会显示为白色,而本教程中则显示为颜色,对于协程中的大多数代码也是如此。

我相信我的代码与教程完全相同。请帮忙。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
关于UnityEngine的第3行是否存在错误?我想知道您是否没有正确添加对UnityEngine程序集的引用。
 

RandDGames

新成员
已加入
2021年1月6日
留言内容
3
编程经验
Beginner
关于UnityEngine的第3行是否存在错误?我想知道您是否没有正确添加对UnityEngine程序集的引用。
您好,谢谢您的回复,我有以下错误:

Assets \ Scripts \ Player \ PlayerController.cs(16,29):错误CS1061:“ Vector2”不包含“ GetAxisRaw”的定义,并且找不到可访问的扩展方法“ GetAxisRaw”接受类型为“ Vector2”的第一个参数(您是否缺少using指令或程序集引用?)X2

Assets \ Scripts \ Player \ PlayerController.cs(33,64):错误CS0103:名称“ mathf”在当前上下文X1中不存在

当我创建unityengine参考时,该参考已经在代码中。
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,497
地点
弗吉尼亚州切萨皮克
编程经验
10+
There's multiple problems at play here, but it comes down to you want to be using Input.GetAxisRaw("Horizontal"), not input.GetAxisRaw("Horizontal"). Note the capital 'I'.

The input (with a lowercase 'i') is actually a Vector2 struct which you declared on line 10. You are trying to use it like the Input class which will obviously not work.

Regarding the mathf error: It should be Mathf.

在C#中,大小写很重要,因为它是区分大小写的语言。
 

RandDGames

新成员
已加入
2021年1月6日
留言内容
3
编程经验
Beginner
There's multiple problems at play here, but it comes down to you want to be using Input.GetAxisRaw("Horizontal"), not input.GetAxisRaw("Horizontal"). Note the capital 'I'.

The input (with a lowercase 'i') is actually a Vector2 struct which you declared on line 10. You are trying to use it like the Input class which will obviously not work.

Regarding the mathf error: It should be Mathf.

在C#中,大小写很重要,因为它是区分大小写的语言。
非常感谢,现在可以编译了,但是代码似乎没有任何作用,我将尝试再次解决。但谢谢您的帮助。
 
最佳 底部