前言
unity 3d刚体组件(Rigidbody)和添加力到对象使对象移动
一、Rigidbody是什么?
通常把在外力作用下,物体的形状和大小(尺寸)保持不变,而且内部各部分相对位置保持恒定(没有形变)的理想物理模型称为刚体。刚体是物理引擎中最基本的组件。在物理学中,刚体是一个理想模型。
Unity 3D 中的 Rigidbody(刚体)可以为游戏对象赋予物理属性,使游戏对象在物理系统的控制下接受推力与扭力,从而实现现实世界中的运动效果。
在游戏制作过程中,只有为游戏对象添加了刚体组件,才能使其受到重力影响。
在一个物理引擎中,刚体是非常重要的组件,通过刚体组件可以给物体添加一些常见的物理属性,如质量、摩擦力、碰撞参数等。
二、使用步骤
1.添加刚体组件
若游戏对象是一个小球,把小球对象命名为player,点击小球,在检查器面板最下方点击添加组件,然后选择物理,再选择刚体即可。
2.脚本中获取对象的刚体组件
为player对象创建一个脚本,这里命名为player.cs,打开编辑器,在代码中输入以下代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public Rigidbody rd;//创建一个刚体对象
// Start is called before the first frame update
void Start()
{
rd = GetComponent<Rigidbody>();//获取刚体组件
}
// Update is called once per frame
void Update()
{
}
}
3.给刚体组件施加力(实现小球滚动)
添加代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
public Rigidbody rd;//创建一个刚体对象
// Start is called before the first frame update
void Start()
{
rd = GetComponent<Rigidbody>();//获取刚体组件
}
// Update is called once per frame
void Update()
{
float h = Input.GetAxis("Horizontal");//A、D/左、右方向键
float v = Input.GetAxis("Vertical");//W、S/前、后方向键
//获取到的float初始是0,在有按键按下时,会递增/递减(取值范围是-1~1),可以模拟一个缓冲加速的过程
rd.AddForce(new Vector3(h, 0, v));//vector3是矢量,模拟的是物理上的力
}
}
现在就可以通过WASD和方向按键选择方向,并通过AddForce方法给对象添加一个矢量的力来推动小球滚动。
注意: 在游戏中,在游戏帧率较低的情况下,可以把上述Update方法中的代码写在FixedUpdate方法中,这样更稳定。
4.修改按键(轴线)
上述代码中Horizontal和Vertical分别代表水平轴线和垂直轴线,这在unity项目中是可以更改的,具体位置在编辑——项目设置——输入管理器中,如下:
在里面还可以修改按键、灵敏度等,或者添加自定义的轴线。