こんにちは。UnrealScriptプログラミングで問題が発生しましたが、私の問題を解決できる人がいるかどうか疑問に思いました。ブロッキングボリュームを使用してキャラクターをシャフトに固定することもできますが、必要に応じて、スクリプトの前に試してみたいと思います。前もって感謝します。
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);
}
ただし、実行しようとしていることによっては、プレーヤーがまだ向きを変えることができ、プレーヤーVelocity
とAcceleration
ベクトルがX軸に厳密に沿っていない場合があるため、このアプローチで問題が発生する可能性があります。PlayerInput
クラスを拡張し、イベントで常にaTurn
ゼロに設定することで、回転を無効にすることができます。PlayerInput
より堅牢な解決策は、PlayerControllerでもう少し計算を行い、ポーンの速度と加速度がX軸に沿ってのみ指すようにすることです。PlayerControllerを使用して、ポーンの加速度を変更することでポーンのモーションを制御する方法の例については、PlayerControllerPlayerMove
の状態にある関数を確認してください。PlayerWalking