Unity 力、射线检测

1. AddRelativeForce相对于自身坐标系的力

 

2.

  1. cube0.AddForceAtPosition(Vector3.forward*5, target.transform.position);

force:给Cube0一个力,控制cube0的移动;

position:cube0和所给点的连线力得大小,这个力跟移动方向有夹角会造成cube0旋转;

 

案例:使用力的方式发射子弹,子弹方向为鼠标点击的方向,LineRenderer画弹道

 

 

Physics射线检测

new Ray(cube0.transform.position, Vector3.forward);

射线,第一个参数:射线的起始点;   第二个参数:射线的方向

 

  1. bool Physics.Raycast(myray)

物理射线监测;

返回值是bool类型,根据返回值只能确定当前射线有没有碰撞到其他碰撞体;

 

RaycastHit hit;

Bool Physics.Raycast(myray, out hit)

返回值只能返回是否碰撞到其他碰撞体;但是out出来一个hit值,这个hit值是我们需要的;

 

当我们射线碰撞到一个游戏物体的碰撞体后,返回一个hit值这个对象包含信息:

public Collider collider { get; }    //碰撞体

public float distance { get; set; }  //碰撞体和射线起始点的距离

public Vector3 normal { get; set; }   // 碰撞点所在的平面的法向量

public Vector3 point { get; set; }    //实际碰撞到的点的世界坐标位置

public Rigidbody rigidbody { get; }// 碰撞到的游戏物体的刚体

public Transform transform { get; } //碰撞到的游戏物体的Transform组件

 

 

   

Int 类型的参数是1左移对应层数所得来的,这样的操作可以一次监测到多个层的游戏物体;

 

 

 

5.一条射线碰撞到多个碰撞体;

 

 

案例:发射子弹生成弹痕

 

Physics 球形搜索

Collider[] OverlapSphere(Vector3 position, float radius, int layerMask);

Position:搜索的球心;

Radius: 搜索半径;

LayerMask:搜索层,满足一个十进制数控制多个二进制层;

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/DGJS/p/11049942.html
今日推荐