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 }

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

  • 相关阅读:
    C++程序设计实验-3
    函数
    C++简单程序设计
    C++程序设计实验-2
    C++程序设计实验-1
    项目总结
    团队测试计划
    第二阶段团队绩效评分
    第二阶段scrum-10
    第二阶段scrum-9
  • 原文地址:https://www.cnblogs.com/weigx/p/7265702.html
Copyright © 2011-2022 走看看