Unity 基础 - 射线

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HelloCode开发者学习平台

iOS开发-KVC从使用到原理详解(1)

相比往年的iOS招聘,相比之前波涛汹涌,这会已经是相对风平浪静.但是实际上这样的风平浪静只不过是由于无法坚守的iOS 开发者相继退出而已.但是该有的竞争...

793
来自专栏大宽宽的碎碎念

程序里怎么表达“没有”

最近忙着调研gRPC做服务治理,尝试用protobuf3重写现有的接口逻辑,发现了一个问题:protobuf3的基本类型不支持nullable。如果想表达“没有...

992
来自专栏云飞学编程

稳固基础!一节课掌握python内置数据类型—列表

点击链接加入群【python┮】:https://jq.qq.com/?_wv=1027&k=577hmAB

832
来自专栏赵俊的Java专栏

黄蓉填充九宫格

经过分析此题要点是边界处理,即向右上移动时,超出九宫格时的处理过程,右上冲突时向下移动不需要考虑边界问题,均未超出边界。

1092
来自专栏GopherCoder

『Go 语言学习专栏』-- 第七期

2536
来自专栏牛客网

今日头条Android开发岗实习生面试

实习僧上投递的简历,6.25下午投递,当天被查看,6.26上午收到面试邀请,约定面试时间7.4  14:00

2521
来自专栏Java学习网

编程的智慧特点

  编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋...

3336
来自专栏calmound

poj 1088 滑雪

题意:找出最长的递增道路,可以上下左右四个方向走 DP方程:step[ i ][ j ] = max{ step[ i-1][ j ],  step[ i ][...

3305
来自专栏CDA数据分析师

人生苦短,为什么我要用Python?

本教程的目的是让你相信两件事:首先,Python 是一种非常棒的编程语言;其次,如果你是一名科学家,Python 很可能值得你去学习。本教程并非想要说明 Pyt...

693
来自专栏葬爱家族

Android高德之旅(17)出行路线规划废话简介总结

今天这篇来记录一下地图SDK中非常重要的一个功能:出行路线规划。我相信高德地图使用最多的也就是这个功能了,当然,我们今天的内容可能还做不到高德地图那么丰富的效果...

1151

扫码关注云+社区

领取腾讯云代金券