Unity 2D Android跳球脚本AddForce

时间:2016-01-29 10:39:23

标签: android unity3d

我是Unity的新手,我正在努力学习基础知识,我在学校学习物理(十年级)。

到目前为止我做了什么 - 在我的项目中添加了一个球,并使用RigidBody对其进行了重力处理。

当有一些触摸输入时,我想让球突然在空中跳跃,例如 - 飞扬的鸟。

我的脚本是基本的:

void Update()
{
    if (Input.touchCount == 1)
    {
        GetComponent<Rigidbody>().AddForce(new Vector2(0, 10), ForceMode.Impulse);
    }
}

使用这个脚本,球正在下降(重力),当我触摸脚本时,Y坐标会发生变化但突然发生(没有动画)并且它会像〜1一样变化并继续下降(我无法保持)在屏幕上的球),我也可以只跳一次,如果我按多次它只会跳一次,你可以在这里看到: https://www.w3.org/TR/html-markup/input.checkbox.html

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

首先,在使用Unity中的物理时,我们强烈建议使用FixedUpdate方法,而不是Update。您可以查看此链接http://docs.unity3d.com/ScriptReference/MonoBehaviour.FixedUpdate.html

第二件事是,也许你没有在球上施加那么大的力量,给予相当冲动所需的力量将取决于你球的刚性质量。所以尝试做类似的事情:

GetComponent<Rigidbody>().AddForce(Vector2.up * 100, ForceMode.Impulse);

更改固定值100以调整您的需求。

答案 1 :(得分:0)

我在Unity3D编辑器中创建了相同的场景,并使用相同的设置播放了一些。是的,我有类似的问题在Update上添加强力,而且(但更少)在FixedUpdate上。但是在LateUpdate上增加力量似乎没问题。

这是我的代码:

public Rigidbody2D rb2dBall;

void LateUpdate()
{
    if(Input.GetKeyUp(KeyCode.Space))
    {
        rb2dBall.AddForce (Vector2.up * 10f, ForceMode2D.Impulse);
    }
}

我也开启了插值:

enter image description here

我不能说为什么像这样的物理bahaves可能是Unity3D 5.X中的一些错误,因为在FixedUpdate它应该可以正常工作。