2.4 物理引擎(下)

来源:互联网 发布:数码宝贝网络侦探友情 编辑:程序博客网 时间:2024/06/06 19:23
day4 物理引擎(下)
1,触发事件
用于物体空间的检测,触发器事件必须满足两个条件:两个物体上都带碰撞器,至少带有一个钢体,并且两物体至少有一个把触发器打开。
OnTriggerEnter(Collider other) 进入触发器的时候调用一次
OnTriggerStay(Collider other) 处于某个触发器之中的时候持续调用
OnTriggerExit(Collider other) 退出触发器的时候调用

2,物理材质
3,射线
射线的创建: Ray ray=new Ray();
origin:射线发射的原点 direction:射线发射的方向
主要方法:使用Physics类方法Raycast方法实现射线碰撞检测功能;
bool Raycast(Ray ray,out RaycatHit hitInfo);
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
从主摄像机到鼠标点击位置创建一条射线;

主要例子:鼠标点击哪里,人物往哪里移动.
if (Input.GetMouseButtonDown(0))
{
//1,得到鼠标点击的位置(相机射线与地面的交点处)
//1.1 发射射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//1.2 检测射线碰撞
//检测射线碰撞
RaycastHit hitInfo;
if (Physics.Raycast(ray,out hitInfo,100))
{
//获取朝向
Vector3 dir = hitInfo.point - transform.position;
Vector3 pos = new Vector3(hitInfo.point.x, 0.5f, hitInfo.point.z);
target = pos;
isMove = true;
//看向某个点,产生的新角度
newRota = Quaternion.LookRotation(dir);
}
}
if (isMove )
{
//实现位移
transform.position = Vector3.Lerp(transform.position, target, Time.deltaTime * 5f);
//线性差值实现旧欧拉角到新欧拉角
transform.rotation = Quaternion.Lerp(transform.rotation, newRota, Time.deltaTime * 5f);
}
}
原创粉丝点击