前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Unity 基础 - 射线

Unity 基础 - 射线

作者头像
hrscy
发布2018-08-30 12:32:16
1.1K0
发布2018-08-30 12:32:16
举报
文章被收录于专栏:hrscyhrscy

Unity 中虚拟射线能够检测所碰撞到物体,使用 Physics 类的 Raycast 方法实现色心啊碰撞检测功能。

代码语言:javascript
复制
using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour {
    
    //在场景中鼠标点击地面后,角色可以移动到目标位置
    
    // Use this for initialization
    void Start () {
    
    }
    
    private Vector3 target; //目标位置
    private bool isOver = true; // 移动是否结束
    public float speed;//角色移动的速度
    
    // Update is called once per frame
    void Update () {
        if (Input.GetMouseButtonDown(0)) {
            print("----");
            //1.获取鼠标点击时的目标位置
            // 使用射线实现
            // 创建射线
            // Ray ray = new Ray();
            //获取当前场景的主摄相机,从摄像机发射出一条鼠标当前位置的射线
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            // 发射射线
            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 = target - transform.position;
            transform.position += v1.normalized * speed * Time.deltaTime;
            if (Vector3.Distance(tar, transform.position) <= 0.1f) {
                isOver = true;
                transform.position = tar;
            }
        }   
    } 
    
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.05.21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档