物理材质
1.物理材质能够刚给物体添加摩擦力和弹力
2.物理材质只能够添加到带有Collider的对象上
射线
虚拟射线能够检查所碰撞到的物体
使用Physics类的Raycast方法实现射线碰撞检测功能
比如鼠标点击地面让任务行走,子弹发射出来有没有打中敌人等等。
public class PlayerController : MonoBehaviour {
//在场景中鼠标点击地面后角色可以移动到目标位置
//1.获取鼠标点击时的目标点
//2.让角色移动到目标位置
public float speed;
private Vector3 target;
private bool isOver = true; //移动是否结束
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//1.获取鼠标点击时的目标点
//使用射线来实现
//a .创建射线
//Ray ray = new Ray();
//不能是一个普通的射线,需要是从摄像机发出的射线
//Input.mousePosition 获取屏幕坐标鼠标的点击位置。
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
// b. 发射射线
RaycastHit hitinfo = new RaycastHit();
if (Physics.Raycast(ray, out hitinfo))
{
//获取碰撞点的位置
//是否与地面发生碰撞
if (hitinfo.collider.name == "Plane")
{
target = hitinfo.point;
target.y = 0.5f;//保证角色不陷入地地下
isOver = false;
}
}
}
//2.让角色移动到目标位置
MoveTo(target);
}
// 让角色移动到目标位置
private void MoveTo(Vector3 tar)
{
// 当前是否结束
if (!isOver)
{
Vector3 v1 = tar - transform.position;
transform.position += v1.normalized * speed * Time.deltaTime;
//速度快的话会引起晃动
if (Vector3.Distance(tar, transform.position) <= 0.1f)
{
isOver = true;
transform.position = tar;
}
}
}
}