zoukankan      html  css  js  c++  java
  • [UE4]计算箭头方向:正切、SetRelativeRotation、RotationFromXVector、Get MotionController Thumbstick X

      

    正切

    正弦函数 sinθ=y/r
    余弦函数 cosθ=x/r
    正切函数 tanθ=y/x
    余切函数 cotθ=x/y
    正割函数 secθ=r/x
    余割函数 cscθ=r/y
     
    已知y和x,求角度θ:arctan(y/x),arctan是反正切,tanθ=y/x,θ=arctan(y/x)。
    UE4提供有arctan反正切等常用数学函数。

      

    UE4提供了更直接的函数,可以把角度很方便的计算出来。

      1、表示角度有2种方式:Vector、Rotator。Vector本身也是可以表示方向,Vector包含方向和大小。

      2、Vector和Rotator是可以互相转换的。

        

      3、手指在手柄圆盘上的位置就是坐标,可以映射到UE4中坐标,然后调用RotationFromXVector,就可以把手指所在位置直接转换成角度。

      4、分析手柄原本坐标与UE4坐标的对应关系。视角的方向正好是X轴,横轴是Y轴;

         

      5、可以通过MotionController thumbstick X和MotionController thumbstick Y事件得到手指在手柄圆盘上的位置。thumbstick X和thumbstick Y事件是每一帧都会被调用,如果手指没有触摸手柄圆盘,则Axis Value的值为0。

        

      6、UE4提供了2个函数可以更直接地获得手指在手柄圆盘上的位置:Get MotionController Thumbstick X、Get MotionController Thumbstick Y

        

       7、SetWorldrotation和SetRelativeRotation。我们拿着手柄的时候,大拇指停留在手柄圆盘的右上角,箭头朝向就应该是相对于手柄右上角,手拿着手柄转动的时候,但是大拇指相对于手柄圆盘的位置是不变的,

        箭头相对于手柄的朝向是发生变化的,箭头的绝对朝向和绝对位置都是发生变化的,但是相对于手柄圆盘的朝向和位置是不变的。

        箭头的朝向是相对于手柄朝向的。因此我们要使用相对Rotation来设置,也就是SetRelativeRotation。

        

        

        

         

        Arrow应该要放在手柄下面,作为手柄的子节点,因为箭头的朝向是相对于手柄朝向的。

  • 相关阅读:
    html meta标签
    随滚动条滚动,动态修改元素class
    获取浏览器长宽自动设置
    SpringMVC常用注解實例詳解2:@ModelAttribute
    SpringMVC常用注解實例詳解1:@Controller,@RequestMapping,@RequestParam,@PathVariable
    Freemarker常用指令使用范例
    Spring整合Freemarker
    SpringMVC配置入門
    再谈深浅拷贝 后端
    转发-react 性能深度探讨
  • 原文地址:https://www.cnblogs.com/timy/p/10425886.html
Copyright © 2011-2022 走看看