zoukankan      html  css  js  c++  java
  • [Unity]射线的简单应用和对UGUI的检测

    最近做的小游戏,需要通过触屏来控制移动,主要做法就是在Update中检测Input.TouchCount,但是问题是会盖住UGUI的Button事件,第一时间想到射线检测

    常用射线

    Unity有射线类Ray和Physics.Raycast()Physics.Linecast()等,他提供强大的API,主要可以从某点发射射线,包括给射线长度和在哪一层检测(LayerMask)

    通常的应用就是鼠标点击位置发射射线,对碰到的第一个物体做出反应(FPS游戏)

    或者以角色为中心,向一个方向发射射线检测是否在边缘或者是否在地面上(比如向下发射一个很短的射线,如果碰到了地面则表示角色处于地面上而非落下或者跳起状态)

    但是这种射线要求被检测物体必须有碰撞器(Collider)

    UGUI的检测

    所以当想要用射线对UGUI检测时,必须给UGUI绑定碰撞器

    而除了加碰撞器外,还可以利用UGUI的EventSystem检测

    EventSystem.current.IsPointerOverGameObject();//此方法返回bool值

    (如果检测触摸Input.Touch,参数传入Input.GetTouch(0).fingerId)

    此方法可以判断是否点击到了UI,但是被检测UI必须勾选RayCast Target

    当然还有很多检测方法,比如重载Unity的一些接口如IPointerXXX系列

  • 相关阅读:
    logback
    GC
    常用JVM配置参数
    JVM
    linux
    简单的webService 实例
    [转载]Java 工程师成神之路
    ActiveMQ 在mac 上的安装与运行
    subline3 + emmet 加快前端开发效率
    Spring WebMVC 4.1.4返回json时导致的 406(Not Acceptable)
  • 原文地址:https://www.cnblogs.com/wayneWy/p/12961265.html
Copyright © 2011-2022 走看看