-1

こんにちは。UnrealScriptプログラミングで問題が発生しましたが、私の問題を解決できる人がいるかどうか疑問に思いました。ブロッキングボリュームを使用してキャラクターをシャフトに固定することもできますが、必要に応じて、スクリプトの前に試してみたいと思います。前もって感謝します。

4

1 に答える 1

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軸にロックする)、ポーンの1つ以上のサブクラスに実装できます。

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でもう少し計算を行い、ポーンの速度と加速度がX軸に沿ってのみ指すようにすることです。PlayerControllerを使用して、ポーンの加速度を変更することでポーンのモーションを制御する方法の例については、PlayerControllerPlayerMoveの状態にある関数を確認してください。PlayerWalking

于 2012-11-01T00:38:52.440 に答える