zoukankan      html  css  js  c++  java
  • 使用Unity3d的Physics.Raycast()的用法做子弹射击

     

    Class Functions

    1)static function Raycast (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : bool
    在origin坐标上建立一个方向为direction,距离为distance的射线,可以与layerMask(层遮罩)之外的所有的collider碰撞;
    返回true如果碰撞到任何物体,否则返回false。 distance默认为无限远,layerMast默认为kDefaultRaycastLayers
    只与第一个接触到的物体产生碰撞。
     

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

    多了一个out hitInfo: RaycastHit, 如果碰撞到物体,具体碰撞数据和被碰撞体都会被记录在RaycastHit上,包括碰撞位置,碰撞位置法线,被碰撞体的Transform节点等信息。其他一样。
     
    脚本:
    var explosionPosition: Vector3;
    var hit: RaycastHit;
    if(Physics.Raycast(transform.position,target.position,hit,100)){
    explosionPosition=hit.point;
    }
     

    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

    直接由一个射线ray来指示位置和方向。其他一样。
     
    2)static function RaycastAll (ray : Ray, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers) : RaycastHit[]

    static function RaycastAll (origin : Vector3, direction : Vector3, distance : float = Mathf.Infinity, layermask : int = kDefaultRaycastLayers) : RaycastHit[]

     
    与所有在ray这条射线上的物体碰撞并返回所有被碰撞体,RaycastHit[]。 其他同RaycastAll一样。
     
     

    3)static function Linecast (start : Vector3, end : Vector3, layerMask : int = kDefaultRaycastLayers) : bool

    static function Linecast (start : Vector3, end : Vector3, out hitInfo : RaycastHit, layerMask : int = kDefaultRaycastLayers) : bool

    从start到end画一条直线,其他与Raycast和RaycastAll类似。 这个通常可以用于检测AI是否能看到目标物体等功能。
     
    4)static function OverlapSphere (position : Vector3, radius : float, layerMask : int = kAllLayers) : Collider[]
    检测在position位置的半径radius的球形范围内是否存在可碰撞体并返回所有检测到的collider
     
    5)static function CheckSphere (position : Vector3, radius : float, layerMask : int = kDefaultRaycastLayers) : bool
    当任何物体碰到position位置的半径为radius的球形范围时返回true;
     
    6)static function CheckCapsule (start : Vector3, end : Vector3, radius : float, layermask : int = kDefaultRaycastLayers) : bool
     
    当任何物体碰到定义的胶囊体范围时返回true;
     
    7)static function IgnoreCollision (collider1 : Collider, collider2 : Collider, ignore : bool = true) : void
    控制collider1和collider2 是否可以碰撞。 ignore=true 两者将不会计算是否碰撞, ignore=false 则计算两者是否有碰撞。
  • 相关阅读:
    mvc3在各个IIS版本中的部署
    linq学习
    常用的正则表达式
    Jenkins+Git+Maven+Tomcat的初步学习
    12个用得着的JQuery代码片段
    JQuery原理介绍及学习方法
    【前端学习】javascript面向对象编程(继承和复用)
    c# throw和throw ex
    .net 信息采集ajax数据
    C# FileSystemWatcher 并发
  • 原文地址:https://www.cnblogs.com/tonge/p/3614414.html
Copyright © 2011-2022 走看看