admin のすべての投稿

Unity入門まとめ

Unityヘルプ

Unityヘルプコーナー

Unity入門まとめ

Unity入門2016-1

Unity入門2016-2

Unity入門2016-3

Unity入門2016-4 座標系

Unity入門2016-5 親子関係

Unity入門2016-6 FPSとTPS

Unity入門2016-7 マップビューの作成

Unity入門2016-8 マテリアルなどの設定

Unity入門2016-9 ゲームフィールドの改善

Unity入門2016-10 ゲーム化の準備(1)

Unity入門2016-11 ゲーム化の準備(2)

スクリプトmyQuestをざっくり対訳してみる

http://nantoka.filmm.info/blog/?p=2023

http://nantoka.filmm.info/blog/?p=2036

Photoshop入門2

  1. 各種フィルタを試す
    1. ぼかし
    2. シャープ
    3. カスタムフィルタ
    4. 畳み込み演算を試してみる
  2. 選択範囲
    1. 矩形,円形選択
    2. 自由選択
    3. クイック選択
    4. 自動選択
  3. トリミング
    1. iPhone7,6ホーム画面サイズ1334×750
  4. 画像解像度と印刷サイズ
    1. リサイズの方法
    2. DPI(Dots Per Inch)
    3. ピクセル=画像を構成する最小単位
    4. ドキュメントサイズ=用紙サイズ
  5. 基礎知識の確認
    1. bitとByte
    2. 1KBは何B?
    3. 非圧縮でRGB各色8bitのときの1ピクセルの画像データ量
    4. bps
    5. MANABOのミニテスト

Photoshop入門1

概略

  1. Adobe PhotoshopやAdobe Illustratorなどは基礎的なツール
    1. Adobe Photoshop=フォトレタッチツール
    2. Adobe Illustrator=ドロー,DTP
    3. InDesign=DTP
  2. フォトレタッチの一例
    1. dove evolution
    2. Bigger Stronger Faster Part 9 11 4’33”から
    3. Photoshop SPEED ART / Nº1 / “Estrés”  (Martin De Pasquale)
    4. 最近では犬のリードを消す商売まで  http://1212.a-thera.jp/
    5. アプリなどで「盛る」>撮影した写真を加工することは日常に(e.g. snowなど)
  3. 実際の使用について
    1. サンプル画像をダウンロードし(ZIP形式)右クリック>展開 で解凍しておく
    2. 起動と終了
    3. 画像ファイルを開く(ダブルクリックしない)
    4. 保存形式の変更
    5. 使用する主な保存形式と拡張子
      1. Photoshop形式  *.PSD
      2. Portable Network Graphics   *.PNG
      3. Joint Photographic Experts Group  *.JPG
    6. 傾きの変更
      1. スマホのカメラでは自動化されていることもある
    7. スタンプツール
      1. 修正の基本
  4. (後半はCG課題制作の時間に)

Unity入門-11 ゲーム化の準備(2)

効果音をアサインする

  1. scriptへのパーツを登録を続けます
  2. edukitの中のseフォルダを開く
  3. lupse2を効果音のGetSound
  4. tickを効果音のTick SEsound
    (※画像では”script”となるべき部分がgamecontrollerになっています)
  5. 次に音再生の準備をする
  6. scriptを選択Component>Audio>Audio Source を選択する
  7. scriptAudio Sourceが追加されます
  8. Audio Sourceは音再生装置と考えてくださ
  9. これでscriptの準備は終わり

FPSControllerへスクリプトを追加する

  1. カメラのついているFPSControllerは,衝突判定にも使用できる
  2. edukitの中のhitObjSenderInspectorにアサインする
  3. hitinfo
  4. このスクリプトはプレーヤー(つまりFPSController)に,当たったColliderが何なのかを,scriptに送るプログラムである
  5. ゲームを再生し,チェックポイントへ向かい,音が出るか,時間表示は適切かなどを確認する

シーン遷移の準備

  1. File>Build Settings… を選択
  2. Add open sceneをクリックし,ビルドするシーンの一覧に現在のシーンを追加するbuidset1
  3. edukit内のopとendも追加し,edu/opのシーンが最上段にくるようにドラッグして移動させるbuild2
  4. BuildeSettingsのウインドウを閉じたあと,シーンを保存しておく

シーン遷移情報の設定

  1. edukit内opを開く
  2. opScriptを選択し,メインシーン名にゲームのメインシーン名を入力する(各自異なるので注意.画像例は02)opscne
  3. 保存し,ゲームを再生してみる
  4. ゲームスタートボタンが押せない場合、Canvas展開しsetsumeiPanelオフにするか(説明文が書けない),setsumeiPanelとその子のsetumeiのRaycast Targetをオフにする(パネルを残してマウスクリックを無視する設定)

レベル調整

  1. 何度かテストプレイし遊びやすく調整する
  2. また,プレイしたことのない人に遊んでもらい,難易度を調整すること
  3. 特に容赦のない他人や子供はバグ取りに最適です
  4. オープニング→ゲーム→エンディング と1周する状態になりバグも出ないようであればビルドを実行する
  5. File>Build SettingsでBuild Settingsの画面を開き,Buildをクリックする
  6. 保存先を設定すればビルドが開始される
  7. ビルドが成功したら,早速アプリを実行してバグがないか確認すること

提出について

  1. ビルド後,Mac版は1つのファイルが作成されるが,Windows版はアプリとそれが使用するファイルの入ったフォルダが作成される
  2. 提出時の際Windows版はアプリとそれが使うフォルダの2つを提出する必要があるので注意

おかしいとおもったら

  • なにかひっかかる感じがする>自分の位置を示すマーカー(白い球)が木などにひっかかっているかも.球のColliderのチェックを外すか,Yの値を上げてみる
  • 歩く音が出なくなった>マップビュー用のカメラにもAudioListnerがついているのが原因,歯車のアイコンでRemove Componentしましょう
  • 時間が0秒以下になってもゲームできてしまう>仕様です 時間に余裕をみてこのバグを取る回を設けたいと考えています

次へ

Unity入門-10 ゲーム化の準備(1)

概略

  • 複数シーンをまたぐゲーム化をおこなう
  • 今回は作成手順を理解するため,スクリプトは提供されたものを使用する

準備・パッケージの読み込み

  1. スクリプトなどが入ったedukit2.unitypackageをダウンロードする(ダウンロードはここから)
  2. Assets>ImportPackage>Custom Package… でダウンロードしたパッケージを読み込むimport
  3. Asset内にedukitというフォルダが作成される

タグの準備

  1. チェックポイント(今回はCube)を作成しフィールド内に配置する
  2. チェックポイントを選択し,InpsectorのタグからAdd Tagを選択
    addtag1
  3. タグとしてpointObjを追加するaddtag2

チェックポイントの準備

  1. 再度Isnpectorに戻り,作成されたタグpointObjを選択する
  2. BoxColliderIsTriggerにチェックを入れる(衝突しないですり抜けられるようになるり,トリガー=きっかけ を発生させることができる)
  3. マップビュー用のマーカーをチェックポイントの子にする
    cubeedit
  4. これを4回繰り返し,チェックポイント5個作成する (ただし以後は1個のみで説明しています)

スクリプトを空のオブジェクトに配置する

  1. Gameobject>Create Empty で空のオブジェクトを作成し名前をscriptにする
  2. Asset内にある(さきほど読み込んだ)Edukit>myQuest をscriptにアサインするaddscript
    (※画像ではscriptであるべき部分がgamecontrollerになっています)

解説

  1. GameObjectにどんなコンポーネントをアサインするかでそのオブジェクトの性質が変わる.カメラコンポーネントをアサインすればカメラに,Meshfilterをアサインすれば3Dオブジェクトに,今回はスクリプトだけをアサインしている
  2. この「空のオブジェクト」は便利な入れ物と考えてよい.CGソフトではNullや,ロケーターと呼ばれている

UIprefabを配置する

  1. Asset内にある(さきほど読み込んだ)Edukitの中のUIprefabをヒエラルキーにドロップします
  2. ゲーム画面にするとUI(ユーザインタフェイス)が表示されます
  3. このPrefabの中身は次の項目で使用します
  4. なおUIについてはこちらも参考に

スクリプトにパーツをアサインする

  1. 再びscriptを選択し,Inspectorに以下のような入力をする
  2. 経由地の数は5(半角)
  3. カウントダウンの初期時間は180(半角)
  4. UIprefabを展開し,対応するパーツ(下図参照)をアサイン
  5. エンディングのシーンにend(半角)と入力partsassign
    (※画像では”script”であるべき部分がgamecontrollerになっています)

つぎへ

 

 

キャラクタをジャンプさせる

スクリプトのみです

_jumpPowerの値を他のプログラムや装置で変化させると,動的にジャンプ力が変わります

using UnityEngine;
using System.Collections;

public class jump : MonoBehaviour {

	// 変数一覧
	public GameObject _myobj;//ここにRigidbodyのついてるゲームオブジェクト
	Rigidbody _myrigid;//リジッドボディ用変数
	public float _jumpPower;//ジャンプ力



	void Start() {
		_myrigid = _myobj.GetComponent<Rigidbody>();//ゲーム開始時にゲームオブジェクトからリジッドボディのコンポーネントを取得する
	}


	void FixedUpdate() {//fixed updateはリジッドボディの時に使う
		if (Input.GetKeyDown("space"))//キー入力でスペースキー
			_myrigid.velocity = new Vector3(0, _jumpPower, 0);//y方向にジャンプ力を加える

	}
}

 

実行の様子

空のゲームオブジェクトにスクリプトをアサインして,リジッドボディのついたcubeオブジェクトをスクリプトにアサインして,スペースキーでジャンプさせています

Unity入門-9 ゲームフィールドの改善

コライダの設置

  1. 現在は地形の端に行くと世界の果てに落下するが,これを防ぐために衝突判定用のオブジェクト=コライダを設置し,それ以上先に進めないようにする
  2. まずCubeを作成し,Terrainを囲むように設置する
  3. 囲んだCubeのMeshRendererをオフにする。これで面が表示されなくなる
  4. この時,Box Colliderはそのままにする(これがコライダ)collider
  5. 緑の線(コライダ)だけが残るcollider2
  6. このコライダは衝突判定のための形状で,同様にカメラが搭載されているFPSControllerもColliderを持っているため互いにぶつかってこの壁を通れない
  7. これを応用すれば水の上も歩行可能になる
  8. 実際には地平線の先が見えないように,周囲は山を高くするなどしてユーザが没入できるような工夫が必要

カメラの視程を調整

  1. カメラの視程を調整し余計な部分が見えにくいようにする
  2. ゲーム画面のカメラはFirstPesonControllerにアタッチされている
  3. CameraのClipping PlanesのFarを100程度にする
  4. これで最短距離0.3m〜100mの範囲だけが描画されるようになるshitei

霧を出現させる

  1. Window>Lightingを選択
  2. Scenesを選択
  3. FogをONにする
  4. Fogを下図のように調整するkasumi

次へ

Unity入門-8 マテリアルなどの設定や応用

レイヤーで不要な表示を消す

  1. マップビュー用に作成したマテリアルが水面に反射してしまう
  2. これはCameraのレイヤーに関わりなく,(WaterProDaytimeを出していれば)WaterProDaytime全てのレイヤーを反射しているからである
  3. そこでWaterProDaytimeを選択し,Reflect Layersの中からmarkerのチェックを外すと水面にも表示されなくなりますrefrect

マテリアルその3 NormalMapをアサインする

  1. マテリアルにはノーマルマップ(法線マップ)をアサインできる
  2. GameObject>3D Object>Cube で立方体を作成するmatnormal
  3. Asset内に空のマテリアルを作成し(Asset右クリック>Create Material),分かりやすい名前に変更する
  4. 作成したマテリアルを選択し,InspectorのAlbedoの左にある○をクリック
  5. Select Texture画面が開くので,上段の検索フィールドにmudと入力すると,MudAlbedoSpeculraTextureが表示されるので,選択をする
  6. 次にNormal Mapの左の○をクリックし,同様に検索語にmudを入力し,MudRockyNormalが表示されるのでこれを選択する
    normal2
  7. 作成されたマテリアルをさきほど作成したCubeにアサインするnormal3
  8. 6ポリゴンしかないCubeが一見して超ハイポリゴンに見える
  9. 見た目の形状が変わっているため,光源が変化すると影も変化するnormalshado

Normal Mapとは

  1. 計算資源に限りのあるスマートホンや携帯ゲーム機といったデバイスには,距離などによってローポリ/ハイポリのモデルを切り替えるLOD( Level of Detail)を利用したり,Fogや視程を下げるなどして狭い範囲だけ描画するなどしている
  2. Normal Mapはポリゴンの表面にある法線を画像で指定する方法で,少ないポリゴンでも見た目を細かく見せることができるため,皮膚や服のシワ,壁や地面といった部分に使用される
  3. このNormal Mapは自分でも作成でき,画像などを加工してもそれなりなものを作成できるため,出かけた際は地面や壁や屋根の写真を撮影することをお勧めする

つぎへ

Unityヘルプ

Standard Packagesが読み込めなかった

  • プロジェクト作成後であれば,Asset>ImportPackages> から読み込む
  • 無い場合は http://u3d.as/cg6 からダウンロードする

なんかInspectorの表示がおかしい,やたらInstanceIDとか表示されている

  • InspectorがDebugモードになっているのでNormalモードに戻すdebug

シーン遷移で明るさが変わる