強火で進め

このブログではプログラム関連の記事を中心に書いてます。

付属の資料でスクリプトの基礎を勉強(1)

Unityをインストールしたときに付属する( /Applications/Unity/Tutorials に有る)PDFファイル「2 - Scripting Tutorial.pdf」の内容をやってみました。
※細かい部分は一部省略しています。気になる方はPDFファイルを参照下さい。

プロジェクトの作成

Unityを起動します。
起動すると「Project Wizard」というタイトルのウィンドウが表示されるのでここで以下の作業を行います。
1. 「Create new Project」タブを選択。

2. Setボタンを押し、自分の好きなディレクトリに「Test」という名称でディレクトリを作成する様に指定。
3. チェックはすべて外す。
4. Create Projectボタンを押し、プロジェクトを作成。

PanelとCubeの作成

Panelの作成

1. メニューから GameObject -> Create Other -> Cube を選択。Hierarchyビューの Cube を選択後、Enterキーを押し、名前を Panel に変更。

2. InspectorビューのScaleの値を X=5, Y=0.1, Z=5 に設定。

Cubeの作成

1. メニューから GameObject -> Create Other -> Cube を選択。
2. Hierarchyビューの Cube を選択後、Enterキーを押し、名前を Cube1 に変更。
3. InspectorビューのPositionの値を X=7.401196, Y=48.42191, Z=-40.55587 に設定。

カメラの調整

1. HierarchyビューのMain Cameraを選択。
2. Positionの値を X=6.223213, Y=51.2841, Z=-46.81571 、RotationのXの値を 19.72384 に設定。

ライトの作成

1. メニューから GameObject -> Create Other -> Point Light を選択。
2. Positionの値を X=5.692339, Y=49.71016, Z=-41.931 に設定。

とりあえずここまで一度、Sceneを保存します。ショートカットCmd+S押し、表示されるウィンドウで「World」と名称を設定し、保存します。

引き続き作業を進めます。

プログラム(JavaScriptファイル)の作成

1. メニューから Assets -> Create -> Javascript を選択。
2. Projectビューの NewBehaviourScript を Move1 にリネーム。
3. その Move1 をダブルクリックし、表示されるエディタで以下の様に記述。

function Update () {
	transform.Translate(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
}

4. ショートカットCmd+Sでプログラムを保存。

カメラにプログラムを割り当てる

1. Hierarchyビューの Main Camera を選択。
2. メニューから Components -> Scripts -> Move1 を選択。

これで第一段階の作成が完了です。
動作テストをしてみます。

動作テスト

1. 再生ボタンを押す。
※ショートカットCmd+PでもOK。

2. ボタンが以下の様な色になったらテストが可能です。キーボードのW,S,A,Dキーを使ってGameビューのカメラが移動できるかテストしてみましょう。

改良

実は現在設定しているプログラムではキーボード入力でのカメラの移動量が一定ではありませんでした。これを一定にするためにプログラムを以下の様に変更します。Projectビューの Move1 をダブルクリックし、以下の内容に変更して下さい。

var speed = 5.0; 

function Update () {
	var x = Input.GetAxis("Horizontal") * Time.deltaTime * speed; 
	var z = Input.GetAxis("Vertical") * Time.deltaTime * speed; 
	transform.Translate(x, 0, z); 
}

プログラムを実行してテストしてみましょう。以前のプログラムとは異なり、 Time.deltaTime に使用したい移動量(今回はspeedで指定)を掛ける事により一定時間に一定量の移動になっています。

speedの値を 100.0 などに変更すると移動量が変化するのを確認してみましょう。

この設定だけでキーボードの入力に反応するカラクリついて

メニューから Edit -> Project Settings -> Input 選択すると以下の様な画面が表示されます。

ここで Axes -> Horizontal と Axes -> Vertical に注目します(選択して展開して下さい)。
この2つがプログラムのこの部分に対応しています。

Input.GetAxis("Horizontal")
Input.GetAxis("Vertical")

HorizontalとVerticalのパラメータを確認すると Alt Negative Button と Alt Positive Button に今回使用したW,S,A,Dキーが設定されている事が確認できます。

この値を変更すると他のキーで操作が可能になります。

ちなみに Negative Button と Positive Button というパラメータも気がつくと思います。こちらが本来のキー入力となります。Alt付きの方は補助的な設定です。
こちらにはカーソルキーの上下左右が設定してあります。ゲームを実行し、カーソルキーで操作するW,S,A,Dキーと同様に操作ができる事が確認できます。

まだ、PDFの途中ですが長くなったので次回へ続きます。