c# - 如何统一指挥后退
问题描述
我是统一的新手,试图让立方体在命令下向前和向后移动,一切正常,除了当我试图向后移动它时,它不会向后移动,它只是停止。有人可以帮忙吗?
using UnityEngine;
public class kretanje : MonoBehaviour
{
public Rigidbody rb; // ime varijable rigidbody koju mozemo kasnije koristiti u programu smo nazvali rb
public float forwardForce = 0;
public float sidewayForce = 500f; // to smo stavili da mozemo u inspectoru mijenjati i silu za livo desno
// Update is called once per frame
void FixedUpdate() // dodajemo svaki put kad se zelimo igrat s fizikom (dodavanje sile, gasnje gravitacije...)
{ // dodaj silu za unaprijed
rb.AddForce(0, 0, forwardForce * Time.deltaTime); // da bi islo isto ako razlicita racunala imajj razlicite timeframove
if (Input.GetKey("d"))
{
rb.AddForce(sidewayForce * Time.deltaTime, 0, 0);
}
if (Input.GetKey("a"))
{
rb.AddForce(-sidewayForce * Time.deltaTime, 0, 0);
}
if (Input.GetKey("w"))
{
rb.AddForce(0, forwardForce * Time.deltaTime, 0);
}
if(Input.GetKey("s"))
{
rb.AddForce(0, -forwardForce * Time.deltaTime, 0);
}
}
}
解决方案
您总是在向前施加力(rb.AddForce(0, 0, forwardForce * Time.deltaTime)
),即使您按下s,也永远不会在相反方向施加足够的力来克服它。因此,在按下 时增加比这更大的力s。s或者,也许更好的是,如果被按下,则不要添加该力:
if (!Input.GetKey("s"))
{
// da bi islo isto ako razlicita racunala imajj razlicite timeframove
rb.AddForce(0f, 0f, forwardForce * Time.deltaTime);
}
else
{
rb.AddForce(0f, 0f, -forwardForce * Time.deltaTime);
}
if (Input.GetKey("w"))
{
rb.AddForce(0f, 0f, forwardForce * Time.deltaTime);
}
if (Input.GetKey("d"))
{
rb.AddForce(sidewayForce * Time.deltaTime, 0f, 0f);
}
if (Input.GetKey("a"))
{
rb.AddForce(-sidewayForce * Time.deltaTime, 0f, 0f);
}
顺便说一句,默认情况下,您可以使用Input.GetAxisRaw("Vertical")
计算 W/S 压制和Input.GetAxisRaw("Horizontal")
计算 A/D 压制:
float vertical = Input.GetAxisRaw("Vertical");
float horizontal = Input.GetAxisRaw("Horizontal");
if (vertical >= 0f)
{
rb.AddForce(0f, 0f, forwardForce * Time.deltaTime);
}
rb.AddForce(horizontal * sidewayForce * Time.deltaTime, 0f,
forward * forwardForce * Time.deltaTime);
您可以查看 Unity 的输入管理器文档以获取更多信息。
推荐阅读
- firebase - 仅在发布模式下,具有 Firebase 的 Flutter 应用程序才会崩溃
- apache-kafka - 通过 Kafka Consumer 消费消息时出错
- javascript - JavaScript修改innerHTML后从PHP中的HTML标签获取文本
- pandas - 向熊猫数据框添加额外的日期行
- awk - GAWK 语法问题
- typescript - 打字稿泛型循环对象数组并与它们相交
- python - 如何在尝试加入之前检查我的机器人是否有权查看语音频道?
- python - 错误消息:“'NoneType' 对象不可调用”。- 从 zappa 在 AWS Lambda 上部署的 django 应用程序接收
- python - 从自定义 txt 地图确定多边形坐标
- flutter - 可以将 ConsumerWidgets 嵌套在 Riverpods 中吗?