- 已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
昨天关门了。
Improve this question
我正在尝试在2D空间中移动一个角色,自上而下。我是C#的新手,我一直在学习一些教程,学习如何使用简单的WASD移动2D角色。请对我放松点。请忽略射击部分
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;
public class PlayerController : MonoBehaviour
{
public float moveSpeed = 1f;
private Rigidbody2D rb2d;
[SerializeField] private Camera cam;
[SerializeField] private GameObject gunPoint;
private Vector2 moveInput;
// Start is called before the first frame update
void Start()
{
rb2d = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
CheckCursor();
}
private void FixedUpdate()
{
Movement();
}
private void CheckCursor()
{
Vector3 mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
Vector3 characterPos = transform.position;
if (mousePos.x > characterPos.x)
{
this.transform.rotation = new Quaternion(0, 0, 0, 0);
}
else if (mousePos.x < characterPos.x)
{
this.transform.rotation = new Quaternion(0, 180, 0, 0);
}
// TODO : Implementasi player shooting
}
private void Movement()
{
// TODO : Implementasi movement player
rb2d.MovePosition(rb2d.position + moveInput * moveSpeed * Time.fixedDeltaTime);
}
void onMove(InputValue input)
{
moveInput = value.Get<Vector2>();
}
}
Unity中出现的错误是:资源/脚本/播放器控制器. cs(59,21):错误CS0103:当前上下文中不存在名称"value"。
我试着安装InputSystem包,我试着更改一些代码以更适合此代码,我检查了其他代码示例,遗憾的是无济于事。
感谢您的阅读,我感谢任何反馈,包括我是多么的笨,我应该如何学习C#正确的第一。
1条答案
按热度按时间2w2cym1i1#
在函数onMove中,传递一个InputValue类型的参数,其名称为input。
考虑到这个InputValue类有一个返回Vector2的Get成员,因此您需要使用与传递的参数(这里是input)相同的名称,将结果赋给私有成员moveInput:
编辑以回答您的编辑:对于新的输入系统,这里有一个视频代码猴子解释它很好How to use NEW Input System Package。
我也推荐你看一下它的新Tutorial,它涵盖了很多关于Unity和整个游戏开发过程的内容,看看它关于事件的具体视频。
即使另一个youtube用户Brackeys的一些视频现在已经很老了,但他是一个开门见山的好老师。