UDN
Search public documentation:

MyFirstControllerJP
English Translation
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

はじめてのコントローラ

2226 ビルドのために2003年11月18日にChris Linder (DemiurgeStudios)により作成。Chris Linder (DemiurgeStudios).により最後に更新。Michiel Hendriksにより楽しみのために最後に更新。

関連文書

はじめてのポーン , 「はじめてのコード」 , はじめての GameInfo , はじめての HUD

はじめに

「はじめてのコード」 文書をまだお読みでないなら、まず読む必要があります。

本書では、簡単に飛んだり、ダンスのアニメーションをプレイしたりすることを可能にする簡単なコントローラ クラスの作り方を取り上げます。この例には、 はじめてのGameInfo に記述されているGameInfo に加えて、 「はじめてのポーン」 に記述されているポーン クラスが必要です。

この例を使用するためには、 「はじめてのコード」 文書にあるインストール指示の通りにしてください。「はじめてのコード」文書には、コンパイルされた *.u ファイルとすべてを機能させるためのアニメーションとテクスチャのパッケージに加えて、UnrealScript ソース コードが含まれています。

この例は、ストレート コード ドロップ、UDNBuild、UDNBuildOff およびRuntime を含むエンジンの 2226 ビルドのすべてで使用できますし、またエンジンの 3323 (およびより新しいこともあります)ビルドでも使用できます。

飛んだり歩いたり

歩くことと飛ぶことを容易に切り替えるために、Fly, Walk, ToggleFlyWalk の3つの exec 関数があります。これらの関数は、ランタイムのRTPlayerController にあるのと同じ関数です。これらの関数は、コントローラ(CheatManager.ucではありません)で定義されており、不正な関数ではありません。したがって、ネットゲームで使用できます。これらの関数をネットゲームで適切に機能させるためには、サーバに適切にレプリケートする必要もあります。次のレプリケーション ブロックと関数に、その方法が示されています。

replication
{
   reliable if(Role < ROLE_Authority)
      Fly, Walk, ToggleFlyWalk;
   ...
}

exec function Fly()
{
   if ( Pawn != None )
   {
      Pawn.UnderWaterTime = Pawn.Default.UnderWaterTime;
      ClientMessage("You feel much lighter");
      Pawn.SetCollision(true, true , true);
      Pawn.bCollideWorld = true;
      GotoState('PlayerFlying');
   }
}

exec function Walk()
{
   if ( Pawn != None )
   {
      Pawn.UnderWaterTime = Pawn.Default.UnderWaterTime;
      Pawn.SetCollision(true, true , true);
      Pawn.SetPhysics(PHYS_Walking);
      Pawn.bCollideWorld = true;
      GotoState('PlayerWalking');
   }
}

exec function ToggleFlyWalk()
{
   if(IsInState('PlayerFlying'))
      Walk();
   else
      Fly();
}

ダンスする

DoDance 関数によって、プレーヤが、すべてのクライアント上のアニメーションをポーンにプレイさせることがどのようにして可能なのかが説明されます。この関数では、アニメーションがサーバに呼び出された場合にアニメーションのレプリケーションを適切に処理するExamplePawn のSetAnimAction 関数が使用されます。このことについては、 「はじめてのポーン」 文書で説明されています。以下のコードのブロックを見れば、SetAnimAction が複数プレーヤの状況でサーバに呼び出されるのが分かります。このコードは、シングル プレーヤでも機能します。

var bool DoingDance;

replication
{
   ...
   reliable if ( Role < ROLE_Authority )
      DoDance;
}

exec function DoDance()
{
   if( ExamplePawn(Pawn) != NONE && Pawn.Physics == PHYS_Walking && !DoingDance)
   {
      Pawn.SetAnimAction( ExamplePawn(Pawn).DanceAnim );
      PlayerReplicationInfo.Score += 1;
      DoingDance = true;
      SetTimer(3.0, false);
   }
}

event Timer()
{
   DoingDance = false;
}

ポーンが「ダンス」を速くしすぎないようにするために、SetAnimAction が呼び出される速度を制限するために、Timer を bool DoingDance と連携させて使用します。DoingDance は、=false= (偽)に初期設定されてスタートします。複数プレーヤの状況では、タイマーはサーバ側にのみ存在します。ポーンは、地上に立っているときは、ダンスしません。( Pawn.Physics == PHYS_Walking )

Uコントローラを使用する

まず、例をインストールします。例をインストールする方法については「はじめてのコード」 文書を参照してください。

次に、=ToggleFlyWalk= にバインドするキーがあることを確認する必要があります。Runtime では、デフォルトで [ F ]キーです。もしRuntime を使用しておらず、何らかの理由でキーをバインドしていない場合は、ゲーム中のコンソールに([~] を押してコンソールを立ち上げます)、タイプ入力でキーをバインドする必要があります。

set input f ToggleFlyWalk

もちろん、飛ぶことを[ F ] キーにバインドする必要はありませんが、そうするとうまく機能します。これで、ゲーム中に飛ぶことのキーを押すことができます。ポーンの飛ぶことと歩くことの2つの状態が切り替わります。

ポーンにダンスをさせるためには、=DoDance= にキーをバインドさせる必要があります。ゲーム中のコンソールに、以下のようにタイプ入力してできます。

set input g DoDance

これで、[G] (ダンスを [G] にバインドしたくない場合はその他のキー)を押すと、ポーンが少し激しく踊ります。正直なところ、それほどダンスには似ていませんが、それらしいことは分かるでしょう。