Help us understand the problem. What is going on with this article?

C#で初心者の為のUnity3D開発~その1

More than 5 years have passed since last update.

2015.2.13 投稿の記事です

開発環境

Mac OS X 10.9.1
Unity4.61

今回の目次

1.Unityの基本的な操作

2.C#でオブジェクトを操作してみる
 

1.Unityの基本的な操作

まず最初にUnityを開くとこんな画面が出てくると思います

Screen Shot 2015-02-13 at 15.30.34.png

これはUnity側が作ってくれている既に完成されているプロジェクトなので新しいプロジェクトを作成しましょう。
(画面上部にある再生ボタンをクリックすると遊ぶ事も出来ます)
 

Screen Shot 2015-02-13 at 15.43.16.png

一番左で再生、真ん中で停止します
 
 

プロジェクトを作成

まずメニューバーから
File > New Project を選択します
するとこんなウィンドウが開くと思います

Screen Shot 2015-02-13 at 15.53.27.png
 
次にSetをクリックして保存場所とプロジェクトネームを決めてSaveしましょう。(Unityは様々なファイルを自動作成するので、保存場所はDesktopは控えた方が良いです)

今回は保存場所をDocuments
プロジェクトネームをUnityTestにします

Screen Shot 2015-02-13 at 16.05.45.png

 
packageのインポートは今回やらずに
早速CreateProjectで作成しましょう!
 
 

オブジェクトを配置してみる

最初はAssetsも何もありません
Main CameraだけがSceneに配置されています

用語 意味
Asset objectファイル等、開発の為の素材です
Scene 映画のシーンのような物でゲーム等はいくつかのSceneから成り立っています。Scene毎にAseetを配置出来ます
Camera 再生ボタンを押した時にカメラ視点になります

 
 
さて四角いキューブを配置してみましょう
メニューバーから GameObject > 3D Object > Cube を選択します

Screen Shot 2015-02-13 at 16.39.33.png

最初はこのSceneのワールド座標の中心に配置されます
ワールド座標とは3Dで開発した事のある人は、心得があると思いますが
このSceneという世界のX軸,Y軸,Z軸で表すオブジェクトの位置の事です
ワールド座標の中心とは、全ての軸が0の状態になります
 
 
さて、この座標を変更してカメラに良い感じに収まるようにしましょう

オブジェクトを動かす方法は2つあります
1つ目はキューブを直接クリックしてドラッグする事で自在に配置する事が出来ます・・・がこの方法だと大雑把にしか配置出来ないので
キューブから出ている3色の矢印を使いましょう

赤はX軸、緑はY軸、青はZ軸に対応して動かす事が出来ます
(この矢印が出てない人はキューブをクリックするか、Wキーを押しましょう。後ほど説明しますが、Q,W,E,R,T,それぞれのキーで操作を変更出来ます)

動かし過ぎた時は
option(alt)キーを押しながらドラッグで見回し
option(alt)キーとcommandキーを押しながらドラッグで視点移動が出来ます

矢印を使ってキューブを動かしましたが
もっと細かく配置したい時に2つ目の方法を使います
 
Screen Shot 2015-02-13 at 17.18.46.png
 
Cubeをクリックした時に右側のinspectorにある
Transformコンポーネントの値をいじります

inspector 種類
Position オブジェクトの位置座標
Rotation オブジェクトの回転座標
Scale オブジェクトの大きさ

それぞれ文字通りその値を変更すればオブジェクトが変動します
今回は位置を動かしたいので、PositionのZ軸を-6にします

これでカメラの前にきたので再生ボタンを押してSceneを実行してみます

Screen Shot 2015-02-13 at 17.33.07.png

こんな感じになりました。
暗いですね、再生ボタン隣の停止ボタンでSceneの編集に戻りましょう

光源を作ります。メニューバーから GameObject > Light > Directional light を選択します
Directional lightはそのワールドの太陽の方向のようなもので
位置は関係無く向きが関係します。今回はデフォルトのX軸50,Y軸-30でいこうと思います。

光の強さは右側のInspectorにあるLightコンポーネントにあるIntensityの値で変更できます。

さて再生してみるとちゃんと真っ白なキューブが映りました

オブジェクトの種類

Cubeを置いた時のようにメニューバーから
GameObject > 3D Object で様々なオブジェクトがあります
いろいろ置いてみると分かりますが、何も無いオブジェクトもあります

それについてはここでは触れませんが、作り過ぎた邪魔なオブジェクトは画面左にあるHierarchyから右クリックしてDeleteします

Sceneのsave

ひとまずここまで作ったSceneを保存しましょう
File > Save Scene でProjectの時の様に保存場所と名前を決めます(command + s でも保存出来ます)
SaveしたSceneは画面下部のAssetsの中に保存されます

Screen Shot 2015-02-16 at 14.47.56.png

今回はTestSceneと名付けました

2.C#でオブジェクトを操作してみる

次はC#Scriptでオブジェクトを動かしてみましょう
メニューバーのAssetsから、もしくは画面下部のAssets内を右クリックして Create > C#Script を選択します
Assets内に「C#」と書かれた紙が表示されるので、名前をTestScriptにしておきましょう

そのScriptをドラッグしてHierarchy内のCubeに入れてやりましょう

早速TestScriptをダブルクリックなりして開いてください
そしたらMonoDevelopというunity標準のツールが開かれてTestScriptの中身が表示されます
Screen Shot 2015-02-16 at 15.07.42.png

関数 動作
void Start() オブジェクトが作られた瞬間に呼び出される
void Update() 毎フレーム呼び出される

※フレームとは1秒間にも何回も再生されている細かい時間単位です

とりあえずコードを書き加えましょう

TestScript.cs
using UnityEngine;
using System.Collections;

public class TestScript : MonoBehaviour {

    private float speed = 0.1f;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {
        if (Input.GetKey ("up")) {
            transform.position += transform.forward * speed;
        }else if(Input.GetKey("down")){
            transform.position += transform.forward * -speed;
        }

        if (Input.GetKey ("right")) {
            transform.position += transform.right * speed;
        }else if(Input.GetKey("left")){
            transform.position += transform.right * -speed;
        }
    }
}

Input.GetKey (“キー名”)でそのキーが押されているかを判断しています
transform.position += transform.forward * speed;ではpositionの座標をspeed分だけ動かしています。

MonoDevelopはUnityとの同期が早いので保存せずとも反映されています
再生して試してみたら動きました!

今回、基本的な説明が多かったので
次回ではもっと多彩なことをやってみようかと思います。

ooike
福岡のとあるデザイナーの学校でプログラムを学ばせてもらってます。 C++,Java,Webなどを勉強されている同じ境遇の方が居ましたら、ぜひ相互にフォローさせてください
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away