• 原型化的相机,方便实时调节


      使用原型可以大幅方便虚幻引擎的实时效果查看,对于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的原型引用即可。

  • 相关阅读:
    Photoshop CC 与前端那些事
    gulp入門指南
    谈谈css左右等高的几个方法
    angularjs给Model添加拦截过滤器,路由增加限制,实现用户登录状态判断
    前端自动化工具
    React Router
    Sublime Text 3 常用插件安装
    c++ primer学习指导(13)--1.6书店程序
    c++ primer学习指导(12)--1.5.2初识成员函数
    c++ primer学习指导(11)--1.5.1Sales_item类
  • 原文地址:https://www.cnblogs.com/NEOCSL/p/2833138.html
Copyright © 2020-2023  润新知