Unity3d 通过射线使物体移动

来源:互联网 发布:js onclick this 编辑:程序博客网 时间:2024/06/08 06:06

实现:

using System.Collections;using System.Collections.Generic;using UnityEngine;public class RayTest : MonoBehaviour {    //设置射线在Plane上的目标点target    private Vector3 target;// Use this for initializationvoid Start () {        //初始化目标点与自身的点重合        target = transform.position;}// Update is called once per framevoid Update () {        //当点击鼠标左键的时候创建一条射线        if(Input.GetMouseButton(0))        {            //定义射线            Ray m_ray;            //保存碰撞信息            RaycastHit m_hit;            //创建一条从摄像机发出经过屏幕上的鼠标点的一条射线            m_ray = Camera.main.ScreenPointToRay(Input.mousePosition);            //判断射线是否碰撞到物体            if(Physics.Raycast(m_ray,out m_hit))            {                //判断碰撞到的是不是Plane                if(m_hit.transform.name=="Plane")                {                    //把目标点target设置为m_hit.point,//并使物体要处于Plane上所以Y轴为0.5f                    target = new Vector3(m_hit.point.x, 0.5f, m_hit.point.z);                }            }        }        Move(target);}    //移动方法    void Move(Vector3 target)    {        if (Vector3.Distance(transform.position, target) > 0.1f)        {            transform.position = Vector3.Lerp(transform.position, target,Time.deltaTime);        }        //如果物体的位置和目标点的位置距离小于 0.1时直接等于目标点        else            transform.position = target;    }}

原创粉丝点击