unity使用鼠标移动对象代码2

来源:互联网 发布:gis制作数据分布地图 编辑:程序博客网 时间:2024/05/18 02:56
public float speed = 20.0f;//速度    public float mass = 2.0f;//质量    public float force = 50.0f;//力    private float curSpeed;//当前速度    private Vector3 targetPoint;//目标位置    void Start()    {        mass = 5.0f;        targetPoint = Vector3.zero;    }    void OnGUI()    {        GUILayout.Label("请点击一处地方,移动主角");    }    void Update()    {        //射线检测鼠标点击移动的位置        RaycastHit hit;        Ray  ray = Camera.main.ScreenPointToRay(Input.mousePosition);        if (Input.GetMouseButtonDown(0) && Physics.Raycast(ray, out hit, 100.0f))            targetPoint = hit.point;        Vector3 dir = targetPoint - transform.position;        dir.Normalize();        AvoidObstacles(ref dir);        if (Vector3.Distance(targetPoint, transform.position) < 3.0f) return;            curSpeed = speed * Time.deltaTime;            Quaternion  rot = Quaternion.LookRotation(dir);            transform.rotation = Quaternion.Slerp(transform.rotation, rot, 5.0f * Time.deltaTime);            transform.position += transform.forward * curSpeed;    }    private void AvoidObstacles(ref Vector3 dir)    {        RaycastHit hit;        if (Physics.Raycast(transform.position, transform.forward, out hit, minDistToAvoid, layerMask))        {            Vector3 hitNormal = hit.normal;            hitNormal.y = 0.0f;            dir = transform.forward + hitNormal * force;        }    }

0 0