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的原型引用即可。

  • 相关阅读:
    113.dynamic_cast 虚函数 通过子类初始化的父类转化为子类类型
    112.虚函数强化
    111.final与override
    110.纯虚函数
    109.虚函数与析构构造
    custom-ubuntu-server-iso
    定制ubuntu的时候修改proseed
    centos使用U盘做启动盘
    fio的配置使用
    持续运行一个命令-并且将结果输出到文本
  • 原文地址:https://www.cnblogs.com/NEOCSL/p/2833138.html
Copyright © 2011-2022 走看看