Unity 基础 - 射线

作者: hrscy | 来源:发表于2016-05-21 10:03 被阅读156次

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

相关文章

  • Unity 基础 - 射线

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

  • Unity 射线

    1,摄像机射线: 2, 物体发射射线: 3, 点击发出射线:

  • Unity射线

    射线 与现实中激光手电(激光笔)类似,射线的两个要素:原点和方向。unity引擎引入了这种机制,可以通过代码在场景...

  • unity 射线过滤

    刚刚看了官方文档,推荐layers来做我直接翻译了一下官方文档这个是官方文档链接 https://docs.uni...

  • 射线检测-unity

    与最近物体碰撞取得位置: 与指定层的物体碰撞: 另外collider相当于游戏物体了

  • Unity射线检测

    Physics.RayCast方法发射射线,射线碰撞的信息存在RaycastHit中。 Camera.main.S...

  • Unity Physics.Raycast

    参考Unity - 射线检测[https://www.cnblogs.com/SouthBegonia/p/117...

  • API

    Plane.Raycast Plane 的介绍参考例子 Unity 之 plane.Raycast 射线检测 拷贝...

  • Unity Recast射线优化

    团队多人在开发游戏界面,很多时候都是复制黏贴,比如上一个图片是需要响应RaycastTarget,然后ctrl+d...

  • Unity 屏幕射线ScreenPointToRay

    如下图所示,点击屏幕时,会生成一条射线,从摄像机的的位置开始,指向屏幕点击的地方,射线继续往前,会穿透绿色的正方体...

网友评论

本文标题:Unity 基础 - 射线

本文链接:https://www.haomeiwen.com/subject/yyanrttx.html