zoukankan      html  css  js  c++  java
  • 原型化的相机,方便实时调节

      使用原型可以大幅方便虚幻引擎的实时效果查看,对于Camera和HUD来说简直就是绝配武器。我们已经不满足于编译程序再看效果这种原始时代步骤了。

    1.新建一个Camera类,内部只有一些简单的内容

    var vector DesiredCameraLocation;   //预指位置
    
    var Pawn HeroPawn;   //要追随的目标
    
    function SetDesiredCameraLocation(vector NewDesiredCameraLocation)
    
    {
    
         DesiredCameraLocation=NewDesiredCameraLocation;
    }

      很简单的开始不是吗?

    2.开始衍生具体的内容

      新摄像机继承原始的,这可以让我们选择使用不同的摄像机模式,例如你在游戏中还希望使用横版TopDown和Platform结合的方式。

    var CameraProperties_TopDown CameraProperties;

      上边的CameraProperties不得了就是圆型类。

    var vector SecondDesiredCameraLocation;   //第二个摄像机预指位置

      重新定义上边的函数内容为第二个

    function SetDesiredCameraLocation(vector NewDesiredCameraLocation)
    
    {
    
        SecondDesiredCameraLocation=NewDesiredCameraLocation;
    }

      下面才是相机问题的核心函数,UpdateViewTarget

    function UpdateViewTarget(out TViewTarget OutVT,float DeltaTime)
    {
        
    }

      该函数内部满足OutVT.POV.Location即是相机的实时位置,OutVT.POV.Rotation即是相机的实时方向。同时使用线性插值可以满足相机的平滑过渡。

    local vector TargeLocation;
    
    //get player's location
    if(AntPawn(GetALocalPlayerController.Pawn)!=none)
    {
        TargetLocation=AntPawn(GetALocalPlayerController.pawn);
    }
    
    //in case we can't get the location
    TargetLocation=OutVT.Target.Location;
    
    DesiredCameraLocation=TargetLocation-vector(cameraproperties.rotation)*CameraProperties.HoverDistance;
    
    OutVT.POV.Location=VLerp(OutVT.POV.Location,DesiredCameraLocation,CameraProperties.BlendSpeed*DeltaTime);
    
    OutVT.POV.Rotation=CameraProperties.Rotation;

    defaultproperties中定义CameraProperties的原型引用即可。

  • 相关阅读:
    linux指令大全
    strcpy.strcmp.strlen.strcat函数的实现
    推箱子
    头文件string.h里的函数
    SVN 版本控制工具
    Nodejs 学习
    JavaScript基础知识复习
    CSS3 学习小结
    JSP中 JSTL
    JSP中的EL语言
  • 原文地址:https://www.cnblogs.com/NEOCSL/p/2833138.html
Copyright © 2011-2022 走看看