投影カメラチュートリアル

概要

このチュートリアルではUnrealscriptを使って視覚スタジオを設立する基本な方法を学びます。

現在、あなたは以下のUnrealscriptと同じ結果を生むためにKismetを使う事が出来ます。しかし、Kismetスクリプトは必ずレベルの中で含まれなければなりません。

Unrealscriptで記述すれば一度記述しただけですべてのマップにカメラを適用出来ます。これはRPGやRTS等のゲームに向いています。


追記:UDNにカメラタイプに関するページがあります。

http://udn.epicgames.com/Three/CameraTechnicalGuideJP.html
これのオールインワンカメラを使えば簡単にカメラを切り替えたりできます。

本文


このチュートリアルでカバーされていること


  • 基本的な Game main class
  • 基本的な Game Controller
  • 基本カメラを三人称視点にする方法
  • main playerの為の基本的なPawn定義

このチュートリアルでカバーされていない事

  • Click on the map
  • Any mouse interactions
  • Pawn rotation and basic A.I.

基本的なGame main class

我々がカバーする最初の事は、main game classです。
もしあなたが既にスタートしていて、Unreal Deathmatchに対するサポートを望まないならば、
あなたのゲームの為のベースクラスとしてGameInfoを使いたいです。

class MyGameInfo extends GameInfo;

defaultproperties
{
        bDelayedStart=false
        PlayerControllerClass=class'MyMod.MyPlayerController'
        DefaultPawnClass=class'MyMod.MyPawn'

        Name="Default__MyGameInfo"
}

現在、宣言されたデフォルトプロパティ(defaultproperties)は、彼らがテキストでハードコードされること以外は、あなたがどんなProperty Editorででもするだろうことと同類の基本的な変数を初期化するのを助けます。
両方の宣言されたクラスは、このゲームがどのクラスで世界で身体的にプレーヤーを代表するプレーヤーコントローラ(プレーヤーコードとインタラクションが位置する所で)とPawnクラスのために働かなければならないかについて、UDKフレームワークに知らせることになっています。
私はあなたはこのチュートリアルが詳述するクラスの観察がそれとして使われることに関してあなたにunvaluableな洞察をする事を提案します。
それはbase game classの為のそれです。あなたがUDKEngine.iniとUDKGame.iniの中に正しくそれを宣言しなければならないのを思い出してください(あなたがそれについて知っていないならば、チュートリアルが上で参照文に引用されるのを見てください。)

class MyPlayerController extends PlayerController
        config(Game);

function UpdateRotation( float DeltaTime )
{
        local Rotator   ViewRotation;

        ViewRotation.Pitch = (-45.0f * DegToRad) * RadToUnrRot;
        ViewRotation.Yaw = (-45.0f * DegToRad) * RadToUnrRot;

        SetRotation(ViewRotation);
}

defaultproperties
{
        CameraClass=class'MyMod.MyPlayerCamera'
}

次はMyPlayerControllerです。これはかなり面白いです。
これは基本的なplayer controllerです。
通常、ここにあなたはこのコントローラでゲームの動かし方やメニュー処理とそれに関係するすべてのコードを置くでしょう。
これはカスタムメイドのゲームPawnとの非常に緊密な関係に命令を出すでしょう。
我々が3人称カメラに特定の角度であることを強いるのは正確にここではあるので、我々にはoverridenUpdateRotation機能があります。
現在、Unrealには回転を扱う特有の方法があります。
彼らは、達します65537が360度と等しい整数(-65537~65537)。あなたは単に各々のフレームで微積分学を保存するためにあなたの角度をそこで入れることができました、しかし、人間の読み込み可能なフォーマットでそれを指定する方法を知っていてうれしいです。あなたは、Object.ucのDegToRad定数とRadToUnrRotに見えることができます。Object.ucを開いてください:

const MaxInt            = 0x7fffffff;
const Pi                        = 3.1415926535897932;
const RadToDeg          = 57.295779513082321600;        // 180 / Pi
const DegToRad          = 0.017453292519943296;         // Pi / 180
const UnrRotToRad       = 0.00009587379924285;          // Pi / 32768
const RadToUnrRot       = 10430.3783504704527;          // 32768 / Pi}

カメラと3人称のデフォルトプロパティです。
現在のUDKは非常に良い三人称カメラが最初からあります。これを最大限の可能性まで使用しないのはみっともないでしょう。
デフォルトのプロパティで見てください。あなたは1行もコードを追加せずにカメラ運動を取り出せます。

class MyPlayerCamera extends GamePlayerCamera;

protected function GameCameraBase FindBestCameraType(Actor CameraTarget)
{
        return ThirdPersonCam;
}

defaultproperties
{
        ThirdPersonCameraClass=class'MyMod.MyThirdPersonCamera'
}

FindBestCameraTypeは3人称カメラの常に強制します。

class MyThirdPersonCamera extends GameThirdPersonCamera;

DefaultProperties
{
        ThirdPersonCamDefaultClass=class'MyMod.MyThirdPersonCameraMode_Default'
}

MyThirdPersonCameraは単に宣言されたDefaultボリュームの実現を指定する為に存在しています。

class MyThirdPersonCameraMode_Default extends GameThirdPersonCameraMode_Default;

var float FOV;

function float GetDesiredFOV( Pawn ViewedPawn )
{
        return FOV;
}

DefaultProperties
{
        FOV=90.f;
        TargetRelativeCameraOriginOffset=(x=-192,y=192,z=192)
        bLockedToViewTarget=TRUE
        bFollowTarget=FALSE
        bInterpLocation=TRUE
        bInterpRotation=TRUE
        bSkipCameraCollision=TRUE
        BlendTime=0.75
}
このDefaltPropertiesは、カメラをPawnの変化に関して挿入させることです。
オフセットは、あなたがデフォルトの高さを指定するのを許します。
私が始めで言ったように、これはあなたを採用することです、あなたはマウスカーソルその他を実行するためにフォーラムをのぞかなければなりません。私がそれについてもっと知るとき、私は多分このチュートリアルの第2部をするでしょう。

以上です。
最終更新:2011年05月08日 09:01
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。