Unity3D实现射线使物体移动

本文实例为大家分享了Unity3d如何通过射线使物体移动的具体代码,供大家参考,具体内容如下

实现:

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class RayTest : MonoBehaviour {

//设置射线在Plane上的目标点target

private Vector3 target;

// Use this for initialization

void Start () {

//初始化目标点与自身的点重合

target = transform.position;

}

// Update is called once per frame

void 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;

}

}

以上是 Unity3D实现射线使物体移动 的全部内容, 来源链接: utcz.com/z/312242.html

回到顶部