我是靠谱客的博主 痴情纸鹤,这篇文章主要介绍Unity API Rigidbody刚体的使用刚体组件中position和MovePosition控制移动通过刚体控制游戏物体旋转 通过AddForce控制运动 通过AddTorque控制旋转,现在分享给大家,希望可以做个参考。

刚体组件中position和MovePosition控制移动

Rigidbody.position

将刚体从一个位置直接设置到另外一个位置用此方法。

刚体的位置。

Rigidbodyposition允许您使用物理引擎获取和设置刚体的位置。如果你用刚体来改变一个刚体的位置。position转换将在下一步物理模拟步骤后更新。

这比使用Transform转换更新位置要快。因为Transform将导致所有附加的碰撞器重新计算它们相对于刚体的位置。

如果你想连续移动刚体,可以使用MovePosition,它会考虑到插值。

复制代码
1
2
3
4
5
6
7
8
9
public class API15RigidbodyPosition : MonoBehaviour { public Rigidbody playerRgd;//刚体 void Update() { //当前位置+前方向*1秒*10 playerRgd.position = playerRgd.transform.position + Vector3.forward * Time.deltaTime * 10; } }

Rigidbody.MovePosition

public void MovePosition(Vector3 position); //持续的移动刚体用此方法。

将刚体插值移动到指定位置。

使用Rigidbody。根据刚体的插值设置移动刚体。

如果Rigidbody上启用了Rigidbody插值,则调用RigidbodyMovePosition在任何呈现的中间帧中都可以实现两个位置之间的平滑过渡。

如果您希望在每个FixedUpdate中连续移动一个rigidbody,那么应该使用这个方法。

设置Rigidbody。相反,如果你想要传送刚体从一个位置到另一个位置,没有中间位置被渲染。

复制代码
1
2
3
4
5
6
7
8
9
public class API15RigidbodyPosition : MonoBehaviour { public Rigidbody playerRgd;//刚体 void Update() { //当前位置+前方向*1秒*10 playerRgd.MovePosition(playerRgd.transform.position + Vector3.forward * Time.deltaTime * 10); } }

Rigidbody.freezeRotation

控制物理是否会改变物体的旋转。

如果启用了自由旋转,则物理模拟不会修改旋转。这对于创造第一人称射击游戏很有用,因为玩家需要完全控制鼠标的旋转。参见:Rigidbody.constraints。

锁定x和z的旋转,只让y轴进行旋转

通过刚体控制游戏物体旋转

Rigidbody.rotation

将刚体从一个角度直接旋转到另外一个角度用此方法。

刚体的旋转。

Rigidbodyrotation允许你使用物理引擎获得和设置刚体的旋转。如果你用刚体改变刚体的旋转。旋转时,变换将在下一步物理模拟步骤后更新。

这比使用Transform更新旋转要快,因为Transform将导致所有附加的碰撞体重新计算它们相对于刚体的旋转。

如果你想要连续地旋转刚体,可以使用MoveRotation,它会考虑到插值。

注意:旋转是世界空间。

Rigidbody.MoveRotation

public void MoveRotation(Quaternion rot); //持续旋转刚体用此方法。

使用Rigidbody使用插值运算旋转刚体

如果Rigidbody上启用了Rigidbody插值,则调用Rigidbody。在任何呈现的中间帧中,移动将导致两个旋转之间的平稳过渡。

如果你想要在每个FixedUpdate中连续旋转一个刚体,就应该使用这个方法。

设置Rigidbody。相反,如果你想要传送刚体从一个旋转到另一个旋转,没有中间位置被渲染。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class API15RigidbodyPosition : MonoBehaviour { public Rigidbody playerRgd;//刚体 public Transform enemy;//朝向的目标 void Update() { if (Input.GetKey(KeyCode.Space)) { Vector3 dir = enemy.position - playerRgd.position;//刚体朝向目标 dir.y = 0;//只需要x和z望向敌人,不需要y轴望向敌人,否则会发生倾斜 Quaternion target = Quaternion.LookRotation(dir);//把望向敌人的向量转换为四元数 playerRgd.MoveRotation(Quaternion.Lerp(playerRgd.rotation, target, Time.deltaTime)); //使用插值运算旋转 } } }

 通过AddForce控制运动

给刚体施加一个力

public void AddForce(Vector3 force, ForceMode mode = ForceMode.Force);

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
public class API15RigidbodyPosition : MonoBehaviour { public Rigidbody playerRgd;//刚体 public int force;//力度 void Update() { //会由慢变快进行加速度一直到稳定 //力度如果太小会跑不起来 playerRgd.AddForce(Vector3.forward * force);//力的方向*力度 } }

 通过AddTorque控制旋转

public void AddTorque (Vector3 torque, ForceMode mode= ForceMode.Force);

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ExampleClass : MonoBehaviour { public float torque; public Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void FixedUpdate() { float turn = Input.GetAxis("Horizontal"); rb.AddTorque(transform.up * torque * turn);//参数是一个float } }

 

最后

以上就是痴情纸鹤最近收集整理的关于Unity API Rigidbody刚体的使用刚体组件中position和MovePosition控制移动通过刚体控制游戏物体旋转 通过AddForce控制运动 通过AddTorque控制旋转的全部内容,更多相关Unity内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部