c# - Mathf.Clamp、MovePosition 和 GetKeyDown 的问题
问题描述
我最近开始使用 Unity 进行编码,但遇到了一个问题。
我试过使用Vector3
,但得到以下错误:cannot convert from void to float
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FrogController : MonoBehaviour
{
Rigidbody2D rb;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
}
void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
rb.MovePosition(transform.position + transform.up);
}
else if (Input.GetKeyDown(KeyCode.DownArrow))
{
rb.MovePosition(transform.position + transform.up * -1);
}
else if (Input.GetKeyDown(KeyCode.LeftArrow))
{
rb.MovePosition(transform.position + transform.right * -1);
}
else if (Input.GetKeyDown(KeyCode.RightArrow))
{
rb.MovePosition(transform.position + transform.right);
}
}
}
我想用它Mathf.Clamp
来限制左右和上下运动transform.rigidbody
解决方案
与 Vector3.Max 和 Vector3.Min 一样吗?
public Vector3 Max;
public Vector3 Min;
void FixedUpdate()
{
Vector3 desiredPosition;
if (Input.GetKeyDown(KeyCode.UpArrow))
{
desiredPosition = transform.position + transform.up;
}
else if (Input.GetKeyDown(KeyCode.DownArrow))
{
desiredPosition = transform.position + transform.up * -1;
}
else if (Input.GetKeyDown(KeyCode.LeftArrow))
{
desiredPosition = transform.position + transform.right * -1;
}
else if (Input.GetKeyDown(KeyCode.RightArrow))
{
desiredPosition = transform.position + transform.right;
}
desiredPosition = Vector3.Min(desiredPosition, this.Max);
desiredPosition = Vector3.Max(desiredPosition, this.Min);
rb.MovePosition(desiredPosition);
}
在本例中,请务必在检查器中设置 Min 和 Max。
请注意,我们将 Max 传递给 Min 函数,将 Min 传递给 Max 函数。这是因为 Vector3.Min 返回传递给它的两个向量的较小分量。当您的仓位超过最大值时,我们要退回仓位,因为它是两者中较小的一个。当位置小于最大值时,我们需要位置(同样,两者中的较小者)。Vector3.Max 则相反。
推荐阅读
- amazon-web-services - 如何每天执行 AWS SSM 自动化文档脚本?
- ros - 拯救新世界时凉亭冻结
- reactjs - Webpack 出错:配置对象无效。Webpack 已使用配置对象初始化
- python - 作为学生学习和使用 Oracle - 是下载本地 Windows 10 副本还是使用在线免费层更好
- powershell - 任何人都可以帮助我解决 Invoke-restmethod 中的此错误
- python - scipy.levene 的输入格式
- matlab - 为什么这个 for 循环不能正常工作?
- xcode-server - Xcode Server 11 导出存档失败
- matlab - 错误信息:无法解析名称 obj.key
- javascript - 如何从一个框架设置 document.cookie 并在另一个框架中获取它