【发布时间】:2015-05-03 16:05:21
【问题描述】:
如何在 Unity 中移动物理精灵?我是像 Farseers 物理学那样对身体施加力,还是移动角色精灵?这就是我目前正在尝试移动它并得到的方式:
NullReferenceException: UnityEngine.Rigidbody2D.get_velocity()
_position.x = Input.GetAxis ("Horizontal");
_position.y = Input.GetAxis ("Vertical");
if (Input.GetKeyDown(KeyCode.Space))
{
_rig.AddForce(new Vector2(_rig.velocity.x, _jumpHeight));
_rig.velocity = new Vector2(Mathf.Clamp(_rig.velocity.x, -_clampValue.x, _clampValue.x), Mathf.Clamp(_rig.velocity.y, -_clampValue.y, _clampValue.y));
}
if (Input.GetKey(KeyCode.D))
{
//_rig.AddForce(new Vector2(_moveSpeed, _rig.velocity.x));
//_rig.velocity = new Vector2(Mathf.Clamp(_rig.velocity.x, -_clampValue.x, _clampValue.x), Mathf.Clamp(_rig.velocity.y, -_clampValue.y, _clampValue.y));
_rig.velocity = new Vector2(_position.x * _moveSpeed, _rig.velocity.y);
}
if (Input.GetKey(KeyCode.A))
{
_rig.AddForce(new Vector2(-_moveSpeed, _rig.velocity.y));
_rig.velocity = new Vector2(Mathf.Clamp(_rig.velocity.x, -_clampValue.x, _clampValue.x), Mathf.Clamp(_rig.velocity.y, -_clampValue.y, _clampValue.y));
}
【问题讨论】:
-
来自Rigidbody2D.velocity:“通常不直接设置该值,而是通过强制设置”。
-
这就是我最初所做的,但使用 KeyCode.D 语句只是因为原始方法不起作用。 “_rig.velocity = new Vector2(Mathf.Clamp(_rig.velocity.x,-_clampValue.x,_clampValue.x),Mathf.Clamp(_rig.velocity.y,-_clampValue.y,_clampValue.y));”用于设置速度的最小值和最大值。这就是 Farseers 物理学的工作原理,但我会尝试把它拿出来看看它是如何工作的。
-
取出所有的夹线并没有帮助
标签: c# unity3d unity3d-2dtools