0

我知道虚幻脚本很旧,但我希望有人可以帮助我......我正在尝试制作一个 Pawn 预览界面,该界面基本上向玩家显示 Pawn 并让它旋转。无论玩家移动到哪里,Pawn 都应该保持在界面中的同一位置......

我已经制作了这个功能,但是当我尝试使用 Yaw 旋转它时,如果我改变玩家的相机方向,它也会导致预览演员的旋转发生变化。如果我移除 Yaw 调整,预览 actor 的旋转在玩家相机旋转改变时不再改变(但它也不会沿着 Yaw 旋转)。

为简化起见,我想绘制一个静态 pawn,无论玩家的摄像机角度如何,它都会在同一屏幕位置旋转。

function RenderModel(Canvas C, PlayerController PO, string ActorToSpawn, vector ParentLocation, rotator ParentRotation)
{
    local vector CamPos,X,Y,Z;
    local rotator CamRot;
    local rotator ModelRotation;
    local Pawn PawnToDisplay;
    local PlayerController PlayerOwner;
    
    PlayerOwner = PO;

    PawnToDisplay = PlayerOwner.Spawn(class<Pawn>(DynamicLoadObject(ActorToSpawn,class'Class')));
    if(PawnToDisplay != None)
    {
        CamPos = Location;
        CamRot = Rotation;

        GetAxes(CamRot,X,Y,Z);

        ModelRotation = OrthoRotation(-X,-Y,Z);

        // This causes the issue...
        ModelRotation.Yaw += YawOffset;

        YawOffset += 50;
        if(YawOffset >= 65536)
        {
            YawOffset = 0.0;
        }



        PawnToDisplay.SetLocation(CamPos + (ModelPosition.X * X) + (ModelPosition.Y * Y) + (ModelPosition.Z * Z));
        PawnToDisplay.SetRotation(ModelRotation);

        C.DrawActor(PawnToDisplay,false,true,90);
    }
}
4

0 回答 0