zoukankan      html  css  js  c++  java
  • Unity3D

    Physics.Raycast 光线投射

     通过触摸点向屏幕内发射射线,获取碰撞的物体相关信息。

    可用方法:

    static function Raycast (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
    
    static function Raycast (origin : Vector3, direction : Vector3, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
    
    static function Raycast (ray : Ray, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
    
    static function Raycast (ray : Ray, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool

    参数属性:

    origin
    射线的起始点
    direction
    射线的方向
    distance 
    射线的长度,默认无穷大
    layerMask 
    只碰撞设置层级Layermask,其它层级的碰撞忽略
    hitInfo 
    当产生碰撞,hitInfo将包含碰撞到的碰撞体信息
    ray 
    射线的起点和方向

    NavMesh和射线结合实例:

     1 using UnityEngine;
     2 using System.Collections;
     3 
     4 public class ClickListener : MonoBehaviour {
     5 
     6     public Transform hero;
     7 
     8     NavMeshAgent heroAgent;
     9     int targetMask;
    10 
    11     void Start() {
    12         heroAgent = hero.GetComponent<NavMeshAgent>();
    13         targetMask = LayerMask.GetMask("map");
    14     }
    15 
    16     void Update() {
    17         if (Input.GetMouseButtonDown(0)) {
    18             RaycastHit hit;
    19             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    20             if (Physics.Raycast(ray, out hit, 100, targetMask)) {
    21                 heroAgent.SetDestination(hit.point);    //设置代理终点
    22                 string hitName = hit.transform.name;    //碰撞的物体的名字
    23             }
    24                 
    25         }
    26     }
    27 }

    根据碰撞的物体名称,可以对物体进行相关处理,如游戏中的拾取,销毁功能等。

  • 相关阅读:
    html5 audio的语法以及属性和方法
    转自可可英语的文章,以激励我努力学习英语。
    Linux下怎么删除非空目录
    Unity脚本时间执行顺序
    一个高手很多同时又能学习英语的问答网站
    Unity中Time.deltaTime的含义及其应用
    用C++画心(转)
    web中将body占满整个页面的办法
    基于FPGA的LCD+CMOS视频采集显示使用小结
    基于iCamera测试500w摄像头-mt9p001,mt9p031,mt9p001模块小结
  • 原文地址:https://www.cnblogs.com/weigx/p/7265702.html
Copyright © 2011-2022 走看看