如何在UnrealScript中将玩家锁定在X轴上?

时间:2012-10-31 16:40:17

标签: locking unrealscript

下午好。 我在使用UnrealScript编程时遇到了一些问题,我想知道你们中是否有人能够解决我的问题。我可以使用阻塞卷将角色锁定到轴中,但是如果必须的话,我想在脚本之前尝试。提前谢谢。

1 个答案:

答案 0 :(得分:1)

一种简单的方法可能是将玩家沿着轴的位置设置回每个刻度线上的固定值。由于你想将他锁定到X轴,你需要确保他的棋子不会沿着Y轴移动。

如果您使用的是自定义PlayerController:

class MyPlayerController extends PlayerController;

simulated event Tick (float deltaTime)
{
    local vector snappedLocation;

    Super.Tick(deltaTime);

    if (Pawn != none)
    {
        snappedLocation = Pawn.Location;
        snappedLocation.Y = 0.0;
        Pawn.SetLocation(snappedLocation);
    }
}

或者如果你想要的不仅仅是玩家的棋子锁定在X轴上(比如说你想让敌人锁定在X轴上),你可以在Pawn的一个或多个子类中实现它:

class MyPawn extends Pawn;

simulated event Tick (float deltaTime)
{
    local vector snappedLocation;

    Super.Tick(deltaTime);

    snappedLocation = Location;
    snappedLocation.Y = 0.0;
    SetLocation(snappedLocation);
}

根据您尝试做的事情,您可能会遇到这种方法的问题,因为玩家仍然可以转身,他的VelocityAcceleration向量可能不会严格指向X轴。您可以尝试通过扩展PlayerInput类来禁用转弯,并始终在aTurn事件中将PlayerInput设置为零。一个更强大的解决方案可能是在PlayerController中自己做一些数学运算,并确保pawn的速度和加速度只能沿着X轴指向;查看PlayerController中PlayerMove状态的PlayerWalking函数,了解如何使用PlayerController通过改变其加速度来控制Pawn的运动。