我如何在统一中移动一个物理精灵?我是向身体施加力量,就像在幻影物理中那样,还是我移动了角色精灵?这就是我现在试图移动它的方式,我得到了:
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));
}发布于 2015-05-03 17:21:26
简单地说,您似乎没有将RigidBody2D分配给您的精灵。
我假设在开始或唤醒方法中以这种方式分配_rig:
_rig = GetComponent<Rigidbody2D>();但是,如果您没有为您的Rigidbody2D分配一个GameObject,它将返回一个空引用。这就是例外的原因。
进入编辑器,在层次结构面板中选择GameObject,然后在检查面板中向它添加一个组件Rigidbody2D。
你增加力量的方式也是错误的。您需要传递一个代表移动方向的Vector2。顺便说一句,你不能用负值夹紧速度,因为速度总是正数。
最后,您在处理输入的方式上犯了错误。您可以使用Input.GetAxis获取轴值,并使用A和D键启动移动。也许它可以工作,因为A和D是在默认情况下水平和垂直轴使用的键,但它可能会导致以后的错误。
出于所有这些原因,我建议您以这样的方式编辑代码:
float horizontal = Input.GetAxis ("Horizontal");
if (Input.GetKeyDown(KeyCode.Space))
_rig.AddForce(new Vector2(0, _jumpHeight));
if (horizontal < 0)
_rig.AddForce(new Vector2(-_moveSpeed, 0));
if (horizontal > 0)
_rig.AddForce(new Vector2(_moveSpeed, 0));
if (_rig.velocity.x > _clampValue.x)
_rig.velocity = new Vector2(_clampValue.x, _rig.velocity.y);
if (_rig.velocity.y > _clampValue.y)
_rig.velocity = new Vector2(_rig.velocity.x, _clampValue.y);https://stackoverflow.com/questions/30016047
复制相似问题