gpt4 book ai didi

c# - 让玩家在 Unity3D 中正确跳跃

转载 作者:行者123 更新时间:2023-11-30 16:51:16 25 4
gpt4 key购买 nike

我还在学习基础知识,所以请稍微温和一点。我正在研究滚球游戏的 ActionScript 。我已经让滚动工作得很好,但现在我正在尝试添加跳跃的能力。

在我的例子中,“玩家”是一个基本的球体。我想要完成的是,当空间被按下时,球会按照它当前滚动的方向跳到空中。

这是我自己尝试过的,但给出了非常奇怪的结果:

float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");

Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

if (Input.GetKey("space"))
{
transform.position += transform.up * 20 * Time.deltaTime;
}

rb.AddForce(movement * speed); //rb = RigidBody

这导致球有时会跳向错误的方向,或者只是加速到某个方向而根本不跳。所以很明显我越来越近了,但还没有到那一步。谁能解释我做错了什么以及如何解决?

不寻求快速修复!不要从中学到任何东西。

最佳答案

试试这个:)

if (Input.GetKey("space"))
{
rigidbody.AddForce(new Vector3(0, yourJumpForce, 0), ForceMode.Impulse);
}

您可能还想调整刚体中的重力设置以获得您想要的跳跃!

编辑 解释:

我认为这可能是因为您将运动应用到您的Rigidbody,但您的跳跃方法应用到Transform 本身。

Rigidbody 是一个物理组件(参见 docs.unity3d.com/ScriptReference/Rigidbody.html),其中 Transform 与位置、旋转和缩放有关.

跳跃可以被认为是一个物理问题 - 因此改变跳跃与物理有关(Rigidbody),而不是位置(Transform)。我倾向于使用 Transform 来完成所有移动代码,因为您正在移动位置,并且使用 Rigidbody 来完成所有基于物理的工作,因为您正在将物理应用到 游戏对象! :)

关于c# - 让玩家在 Unity3D 中正确跳跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34038224/

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