zoukankan      html  css  js  c++  java
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation

    虚幻引擎 3 中供玩家使用的相机系统由三个主要类组成:Camera、Pawn 和 PlayerController。这些类都会交互以控制位置、旋转量以及任何其他在游戏过程中应该用于玩家相机的特效。
    PlayerController 有一个对被使用的 Camera 以及被控制的 Pawn 的引用。PlayerController 会接收玩家的输入数据并将其用于更新它正在控制的 Pawn 的位置和旋转。默认情况下,Camera 会将其更新传递给 Pawn,它反过来会更新相机的位置和旋转。
    通过修改这些类中的一个或多个及其交互方式,可以将玩家的相机设置为使用任何适合于您正在制作的游戏类型的视角向玩家显示这个游戏世界。默认情况下,玩家的相机会使用第一人称,并提供可以将其触发为一个第三人称肩后镜头视角的选项。可以轻松地将它改为自上而下视角、等角视图、横向卷轴视角或任何其他您的游戏可能需要的视图。

    上面说了Vector
    在空间中的一个唯一的三维点或者向量,具有X、 Y、Z分量。
    XYZ是什么?读过书的都知道XYZ轴(没文化的估计不会来做游戏了)


    图画的实在不好看.....Vector的位置如图所示
    计算世界原点o到vector的位置可以用公式
    根号(X平方+Y平方+Z平方)
    说的那么麻烦 其实可以直接用虚幻语言定义好的Vsize 

    function PostBeginPlay()
    {

    //DemoLocation.Z=300.0;
    //SetLocation(Location+DemoLocation);
    SetLocation(Location+vect(30,20,100));

    `log("vector:"@Vsize(Location));
    }


    如果要取两只ACTOR的距离,可以用
    距离=VSize(A.location-B.location)
    也可以B-A
    (扯谈一下,COD等类型游戏的目标点寻路显示距离)

    Rotator 旋转

    先来看一下我的代码
    class MyUSGame extends actor
    placeable; 


    function PostBeginPlay()
    {

    SetLocation(Location+vect(30,20,100));

    SetRotation(Rotation+rot(100,100,3000));


    `log("vector:"@Vsize(Location));

    `log("rotation:"@rotation);
    }

    defaultproperties
    {


    Begin Object class="SpriteComponent" Name=flag
    Sprite=Texture2D'EditorResources.flag1'
    End Object
    Components.Add(flag)

    //加个箭头 好辨认
    begin object class="arrowcomponent" name=ac
    end object
    Components.Add(ac)

    }
    这样的时候是这样的



    在编辑器里转个几十度

    function PostBeginPlay()
    {

    `log("rotation:"@rotation);
    }



    明明转了76度可为什么有这么高的度数?
    这就涉及到一个单位
    在虚幻单位中
    360度=65536
    90度=16384
    1度~=182.0444
    不服口算看我转的这个量是不是等于这个数
     


    Rotation几个值的旋转方向
     
    请教版主一个问题:
    我自定义了一个UDNPlayerController类,class UDNPlayerController extends UDKPlayerController。其中有两条语句,就是取得玩家鼠标输入的旋转,如下:
    DeltaRot.Yaw=PlayerInput.aTurn; 

    DeltaRot.Pitch= PlayerInput.aLookUp;
    第一条语句可以执行,即可以左右旋转;但第二条语句没有任何效果,即无法上下旋转,请我是怎么回事呢?
     
  • 相关阅读:
    Window 窗口类
    使用 Bolt 实现 GridView 表格控件
    lua的table库
    Windows编程总结之 DLL
    lua 打印 table 拷贝table
    使用 xlue 实现简单 listbox 控件
    使用 xlue 实现 tips
    extern “C”
    COleVariant如何转换为int double string cstring
    原来WIN32 API也有GetOpenFileName函数
  • 原文地址:https://www.cnblogs.com/wodehao0808/p/6104795.html
Copyright © 2011-2022 走看看