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 }

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

  • 相关阅读:
    LeetCode 275. H-Index II
    LeetCode 274. H-Index
    LeetCode Gray Code
    LeetCode 260. Single Number III
    LeetCode Word Pattern
    LeetCode Nim Game
    LeetCode 128. Longest Consecutive Sequence
    LeetCode 208. Implement Trie (Prefix Tree)
    LeetCode 130. Surrounded Regions
    LeetCode 200. Number of Islands
  • 原文地址:https://www.cnblogs.com/weigx/p/7265702.html
Copyright © 2011-2022 走看看