c# - unity2d 中的 WASD 运动
问题描述
我是 unity 新手,想知道如何设置A和D键来移动我right
和left
with Rigidbody2D
。我在论坛上找到了这个脚本,但它似乎不起作用:
public float speed = 5f;
private float movement = 0f;
private Rigidbody2D rigidBody;
// Use this for initialization
void Start()
{
rigidBody = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
movement = Input.GetAxis("Horizontal");
if (movement > 0f)
{
rigidBody.velocity = new Vector2(movement * speed, rigidBody.velocity.y);
}
else if (movement < 0f)
{
rigidBody.velocity = new Vector2(movement * speed, rigidBody.velocity.y);
}
else
{
rigidBody.velocity = new Vector2(0, rigidBody.velocity.y);
}
}
解决方案
是否有错误被抛出?
首先要检查的是,无论您将此脚本附加到的任何内容实际上都有一个Rigidbody2D
.
物理学,即设置刚体速度,应该在FixedUpdate
而不是中完成Update
,如果你查看它并且现在看起来太混乱了,别担心,你现在可以摆脱这个。
也许您应该尝试使用rb.AddForce(movement * speed, ForceMode2D.Impluse);
.
由于 varmovement
实际上是正数还是负数取决于您按下的键,所以 if 语句的前两位没有任何用处。
尝试查看有关移动播放器的单个教程。
推荐阅读
- python - 无法在 Django 的 url.py 文件中导入我的应用程序
- python - 为函数对象声明一个给定的签名
- javascript - 当我在日期选择器输入中粘贴新日期时出现日期问题(react-datepicker)
- flutter - 连续产生几个状态,但不是所有状态都被 BlocBuilder 接收
- amazon-web-services - AWS Lambda 调用 API 网关收到 500 内部服务器错误
- indexing - 重新启动 JournalArticle liferay 7 后,IndexerPostProcessor 不起作用
- typescript - 通过拖放(画布)绘制一个矩形
- vba - 这是什么 MS Access 2010 语句结束错误
- powershell - SVN pre-revprop-change 挂钩脚本,与活动目录组一起使用
- excel - 在非活动工作表上写入多个条目的更好结构