Input.GetAxis 获取轴
方法描述;根据axisName名称返回虚拟输入轴中的值。
float ver = Input.GetAxis("Vertical")*speed;//获取X轴,默认情况下他们关联到方向键上,值在-1到1之间
float hor = Input.GetAxis("Horizontal")*rotationSpeed;//获取Y轴
transform.Translate(new Vector3(hor, 0, ver) * Time.deltaTime * 3); //移动
Rigidbody 刚体
通过物理模拟控制一个物体的位置。
添加Rigidbody组件到一个对象,这就置于了Unity的物理引擎下使其运动。即使没有添加任何代码,刚体对象也将在重力的影响下下落,如果带有碰撞器的对象与之碰撞,并将做出反应。
从脚本添加力到刚体对象上,以真实的物理方法来控制它。例如,轿车的行为可以给轮胎施加力,物理引擎处理运动的其他方面,因此,会有更真实的加速度和正确的碰撞反应。
drag 刚体的阻力。
position 该刚体的位置。
rotation 刚体的旋转角度。
useGravity 控制重力是否影响整个刚体。
isKinematic 控制物理是否够影响这个刚体。
AddExplosionForce应用一个力到刚体来模拟爆炸效果。
这个方法有四个参数.并且爆炸效果的物体要是刚体.
explosionForce
爆炸力,可以通过距离来修改
explosionPosition
爆炸中心
explosionRadius
爆炸的半径,在半径内才有爆炸效果。
upwardsModifier
调节爆炸出现的位置,使其看起来像掀起对象。
mode
用于应用到目标力的方式。
运用这个方法需要获取到多个碰撞体
以下这个方法能够获取到在一个中心点内,一个半径内的所有碰撞体
public static Collider[] OverlapSphere(Vector3 position, float radius);
返回值是一个Collider类型的数组.
然后需要遍历这个数组,再判断每一个元素是否是刚体,如果是,就给一个爆炸的效果
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "Exp") //Exp是一个空物体当碰到这个空物体是爆炸
{
Vector3 pos = transform.position; //获取当前对象的位置
Collider[] collider = Physics.OverlapSphere(pos, 10); //返回以该对象为中心 10为半径的圆内所有碰撞体
Debug.Log(collider.Length); //打印获取到了多少个碰撞体
foreach (Collider item in collider) //遍历数组
{
if (item.GetComponent<Rigidbody>()) //判断该对象是否是刚体
{
item.GetComponent<Rigidbody>().AddExplosionForce(_force, pos, 10, 10F);//给物体添加爆炸效果
}
}
}
}
Ray(射线)
Ray是具有开始点和方向的无穷线。
射线的方向。
射线的原点。
返回射线上指定距离的点。
if (Input.GetMouseButtonDown(0))//当按下鼠标左键时
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//创建一条射线,从相机射出一条射线方向是鼠标的位置
RaycastHit hit; //用于保存射线的信息
if (Physics.Raycast(ray, out hit))//判断射线是否射在碰撞体上
{
GameObject a1 = Instantiate(a) as GameObject; //添加预设体
a1.transform.position = hit.point;//将预设体的位置设置为射线与碰撞体的焦点
}
}
网友评论