gpt4 book ai didi

c# - Unity - 通过抵消重力创建气垫车

转载 作者:太空宇宙 更新时间:2023-11-03 22:29:56 25 4
gpt4 key购买 nike

我希望实现一种创建悬浮摩托的方法。我当前悬停的代码是

readonly float yForce = 80;
Physics.Raycast(hoverbike.transform.position, Vector3.down, out hit);
Debug.Log(hit.distance);
if (hit.distance < 10 && hit.distance > 0)
{
if (hoverbike.velocity.y < 0.1)
{
hoverbike.AddForce(0, yForce, 0, ForceMode.Acceleration);
Debug.Log("applying force!");
}
}

这可行,但效果不佳,车辆会上下弹跳。我还尝试减去与自行车的 y 速度 完全相同的力,但车辆缓慢向下漂移,并没有上升到我想要的距离地面 10 个单位的高度。我怎样才能做到这一点?简单地抵消它的当前速度很容易,但是如何让它向上漂浮到所需的高度?

最佳答案

简单地关闭引力比不断对抗它要容易得多;这种频繁的重新调整很可能是您精力充沛的原因。在自行车激活后,您可以将对象的 y 速度 计算完全掌握在您自己的手中:

public class Bike : MonoBehaviour
{
private Rigidbody hoverbike;
private bool isBikeActive = false;

[SerializeField] private float verticalSpeedMultiplier = 1f;
[SerializeField] private float hoverHeight = 10f;
[SerializeField] private float hoverTolerance = 0.5f;
[SerializeField] private float maximumVerticalVelocity = 10f;

private void Awake()
{
hoverbike = GetComponent<Rigidbody>();
}

private void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) { ToggleBike(); }

if (isBikeActive)
{
Physics.Raycast(hoverbike.transform.position, Vector3.down, out RaycastHit hit);

Vector3 modifiedVelocity = hoverbike.velocity;

if ((hit.distance > hoverHeight - hoverTolerance) && (hit.distance < hoverHeight + hoverTolerance))
{
modifiedVelocity.y = 0f;
}
else
{
modifiedVelocity.y = -(hit.distance - hoverHeight) * verticalSpeedMultiplier;
modifiedVelocity.y = Mathf.Clamp(modifiedVelocity.y, -maximumVerticalVelocity, maximumVerticalVelocity);
}

Debug.Log($"Distance from ground: {hit.distance}, Bike Velocity.y: {modifiedVelocity}");
hoverbike.velocity = modifiedVelocity;
}
}

private void ToggleBike()
{
isBikeActive = !isBikeActive;
hoverbike.useGravity = !isBikeActive;
}
}

您的自行车现在将始终尝试向其下方对象上方的点 hoverHeight 移动,直到它位于该点的 hoverTolerance 范围内。它还会更平稳地朝这一点移动,离预期高度越远移动得越快。

如果您希望自行车仍然稍微上下摆动,这可以通过随时间缓慢修改 hoverHeight 来实现,或许可以使用正弦函数。

关于c# - Unity - 通过抵消重力创建气垫车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58434113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com