我是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
感谢您的帮助。
答案 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);
}
}
我也开启了插值:
我不能说为什么像这样的物理bahaves可能是Unity3D 5.X中的一些错误,因为在FixedUpdate它应该可以正常工作。