SlideShare a Scribd company logo
電算Unity講習会
とりあえず触ってみよう編
自己紹介
金沢工業大学大学院工学研究科システム設計工学専攻2年
永瀬研究室所属
安田圭佑
taimiso0319
Unity歴2年くらい
Unity Engineとは
• 通称Unity
• ゲームエンジンの一種
• 複数のプラットフォームに対応
• 様々なソフトウェアの開発が可能
• 主な言語はC#
起動してみよう
金沢工業大学電子計算機研究会新入生向けUnity講習会資料
プロジェクト名
保存場所
ヒエラルキー
シーン
インスペクタ
プロジェクト
再生ボタン
操作してみよう
Cubeを押す
何かシンプルなオブ
ジェクトを出すのは
コレだけで出来る!!
簡単!!!!!!
ゲーム
情報
コンポーネント
Transform:
物体の外観/変形情報
Position:位置
Rotation:回転
Scale:大きさ
Mesh Filter:
ポリゴン情報
Collider:
衝突判定(適当な日本語がない)
Mesh Renderer:
ポリゴンに対する描画情報
Material:
色やテクスチャなど、
物体の材質情報
幅高奥
X Y Z
便利な操作 @tsubaki_t1
• Shift+Ctrl(Command): オブジェクトにひっつく
• V押しながら移動: 頂点にひっつく
• Ctrl(Command)押しながら移動: グリッド移動
• Shift+F: シーンカメラが選択オブジェクトに追従
• Ctrl(Command)+D: 複製
• Shift + F後Alt+ドラッグ: オブジェクトを中心に回転
色を変えてみよう
金沢工業大学電子計算機研究会新入生向けUnity講習会資料
なんかこんなのが出来る
Shader: マテリアルの表現方法
Rendering Mode: 表現方法の基本設定
Opaque: 不透明
CutOut:Alpha Cutoff以下のドットをOff
Fade: 透明度(完全透明)
Transparent: 透明度(不完全透明)
Albedo: 基本色
Metallic: 金属の質感
Smoothness: 荒さ
Normal Map: 法線マップ
Hight Map: ハイトマップ
Occlusion: オクルージョンマップ
Emission: 発光
Detail Mask: 部分詳細マスク
Secondary Maps: 詳細テクスチャ等の上書き
とりあえず色を変えて
ドラッグ&ドロップ
注目!!
物理処理を付けてみよう
てかそもそも物理処理って何?
• 現実世界の物理法則に則った(もしくは摸した) 
演算処理
• 慣性の法則 エネルギー保存の法則等
• 簡単に言えば、落ちたりぶつかったりすること
• Unity側が勝手に計算してくれる
落ちるのに必要なもの
Rigidbody(剛体)
Mass: 重さ(kgらしい)
Drag: 空気抵抗
Angular Drag: 回転抵抗
Use Gravity: 重力の有無
Is Kinematic: 物理エンジンのon/off
Interpolate: 動作補完
Collision Detection: 衝突判定補完
Constraints: 位置及び回転方向固定
ぶつかるのに必要なもの
Collider(衝突判定)
Edit Collider: コライダ頂点の編集
Is Trigger: トリガ判定の有無
Material: 物理マテリアル設定
Center: コライダの中心位置
Size: コライダのサイズ
注目!!
金沢工業大学電子計算機研究会新入生向けUnity講習会資料
落ちるだけじゃつまらない
なんかこんなのが出来る
Physic Material(物理材質)
Dynamic Friction: 動摩擦係数
Static Friction: 静摩擦係数
Bounciness: 反発力
Friction Combine: 衝突時の摩擦挙動
Bounce Combine: 衝突時の反発挙動
Friction Direction 2: 異方性摩擦
Dynamic Friction 2: 異方性動摩擦係数
Static Friction 2: 異方性静摩擦係数
金沢工業大学電子計算機研究会新入生向けUnity講習会資料
金沢工業大学電子計算機研究会新入生向けUnity講習会資料
いくつも設定するのは
面倒くさい
プレファブ
• ゲーム内オブジェクトをプロジェクトに保存する
• コンポーネントの情報をまとめて保存できる
• スクリプトから生成等ができる
• 各情報は後から更新ができる
• 上記のコピペではできないことができる
ドラッグ&ドロップ
なんかこんなのが出来る
ドラッグ&ドロップ
ステージ(Scene)を保存したい
Scene
• ヒエラルキー上オブジェクトの各種情報を保存
できる
• いつでも呼び出して編集が可能
• ステージ移動などに使う
• ビルドするときに順番の設定などをする
なんかこんなのが出来る
名前を付けて保存
新しいシーンを作成すると
最初からに・・・
ダブルクリック!!!
ゲームとして出力がしたい
金沢工業大学電子計算機研究会新入生向けUnity講習会資料
OSXだとこれだけ
Windowsだと二つできる
※Windowsはこの二つが
同階層にないとだめ!
これで起動できる!!!
ここまでは大丈夫?
ちょっとだけレベルアップ!
ヒエラルキー階層構造
• ゲームオブジェクトはそれぞれ親と子の関係になっ
ている
• 一番上(親)階層のオブジェクトはワールドが基準
(X:0 Y:0 Z:0) のワールド座標
• 子は親の座標が基準 (X:0 Y:0 Z:0) のローカル座標
• ワールド座標とローカル座標で動きが違う
ドラッグ&ドロップ
親
子
緑は青を基準に動く
けど説明しづらいので
実 演
レベルアップ!
スクリプト(プログラム)
• C#で記述
• コンポーネントの一つとしてオブジェクトに追
加する
• 主に他のコンポーネントに対して働く
スクリプト作成時について
• 作成した時に名前が変えられるので、クラス等
の概念がわからない場合は、その時点で名前を
変えよう
• C#の特徴としてファイル(.cs)とクラス名が同一
でないとエラーがおきる
なんかこんなのが出来る
ダブルクリック!!!
Mono Develop
色は設定のSyntax Highlightingから変えられる!
Start(): 最初に一度だけ{}の中が実行される
Update(): Start()後毎フレーム{}の中が実行される
何か設定したい時はStart()に記述する
何か常に動かしたい時は
Update()に記述する
よくわからないけど
とりあえずCube動かしてみよう
そうしよう
赤枠のコードを書いてみよう
“=”じゃなくて “+=”なのに注意!!
File → Save
か
Build → Build All
で
保存
ドラッグ&ドロップ
金沢工業大学電子計算機研究会新入生向けUnity講習会資料
速度を変えたい
とりあえず以下のように書いてみよう!
publicとprivateに注意
保存も忘れずに!
publicを付けたものは表示され
privateを付けたもの(test)は非表示に
this.transform.position += new Vector3(xSpeed,0,0);
つまり現状はxSpeed = 0.1になっている
右のように表示され
た数値は手動で変更
が可能(再生中でも)
Vector3
• 3次元ベクトルX Y Zを表している
• つまりVector3(5,3,7)は、X=5 Y=3 Z=7となる
• 2Dゲームの時は奥行きが無い*ので Vector2を使
う *正確にはあるがレイヤーのような働きになる
this.transform.position
• インスペクタのTransformと同じ
this:
このスクリプトがアタッチされているオブジェクト
transform:
Transformコンポーネント
position:
ポジションのプロパティ
this.transform.position += new Vector3(xSpeed,ySpeed,zSpeed);
となるとどうなるか想像してみよう
この数値で
以上を踏まえて
キー入力がしたい
とりあえず以下のように書いてみよう!
できたら保存して
再生してみよう
if(Input.GetKey(KeyCode.Space)){}
if( ){ }:
もし( )の中が真(正しい)なら{ }の中を実行する
Input.GetKey( ):
( )の中のキーが押されている時“真”になる
KeyCode.Space:
スペースキー
つまりスペースキーが押されている間
this.transform.position += new Vector3(xSpeed,ySpeed,zSpeed);
を実行する
そーーーろそろ
FPSみたいな動きがしたい
とりあえず以下のように書いてみよう!
WASDで動くよ
ミススペルに注意!
Input.GetAxis(“”)
Input.GetAxis( ):
( )の中の文字に対して設定されている    
方向情報を取得 (コントローラ対応)
初期設定
Horizontal:
AキーとDキーにより -1 ~ 1 を取得
Vertical:
WキーとSキーにより -1 ~ 1 を取得
カメラをCubeの
子オブジェクトにしよう
カメラ位置はCube後方
位置と方向がずれると
動作に支障がでる
恐れがあるので注意!
X:0
Y:お好み
Z:Cubeより後ろでお好み
ダッシュや回転もしたい
マウスじゃなくてごめん
とりあえず以下のように書いてみよう!
使わないものは消そう
QとEで回転するよ
this.transform.Rotate()
transform.Rotate( ):
( )の中のVector3分回転する
new Vector3(0,1,0);
ならY軸を基準に1度回転する。
if(Input.GetKey(KeyCode.LeftShift)){
dashSpeed = 2;
}else dashSpeed = 1;
Shiftを押している間速度に乗算される
dashSpeedが2になる 離すと1になる
ひとまずここまで!
迷路ゲームくらいは作れる
これ以降おまけ
(時間と体力的余裕があれば)
Unity Asset Store
• メニューバー Window/Asset Storeから表示でき
る
• アカウント紐付けで様々なAssetを買うことがで
きる
• CGや音声、Unity自体の拡張と様々
• 購入はクレジットカード
By けーご @kyusyukeigo
確かに色々手に入るけど、
頼りすぎるのは危険かも・・・?
ここまでUnity5ぽい
機能なし
Physically-based shading
物理ベースシェーディング
• 現実世界の物理法則(マイクロファセット理論や
エネルギー保存の法則に伴う双方向反射率分布関
数など)にしたがってマテリアルのデザインをす
る手法
• 詳しくは“THE COMPREHENSIVE PBR GUIDE”を
よもう
• 簡単にいうとすごいリアルな表現ができる
Shader: マテリアルの表現方法
Rendering Mode: 表現方法の基本設定
Opaque: 不透明
CutOut:Alpha Cutoff以下のドットをOff
Fade: 透明度(完全透明)
Transparent: 透明度(不完全透明)
Albedo: 基本色
Metallic: 金属の質感
Smoothness: 荒さ
Normal Map: 法線マップ
Hight Map: ハイトマップ
Occlusion: オクルージョンマップ
Emission: 発光
Detail Mask: 部分詳細マスク
Secondary Maps: 詳細テクスチャ等の上書き
ハイダイナミックレンジ(HDR)
カメラそれぞれにあるHDR
チェックを入れることで、
白より明るい色を表現できる
特にEmissionのような
自己発光する物体を扱う際には
必須のオプション
とりあえずこんな感じ
作ってみよう
Rendering Mode はOpaque
Albedoを青っぽく
Emissionは数値を入れると色が選べる
光らないじゃないか!!!!
光の反射は静的な物体に
事前焼き込みされる
光を反射させたいオブジェクトは
Staticのオプションをつける
事前に反射が計算されるので…
二色おくとちゃんと混ざる
ついでに暗くしてみた

More Related Content

PDF
Unity&unreal engineハンズオン資料 unreal_4.8
PDF
Unity&unreal engineハンズオン資料 unity
PDF
【Unity道場 幕張スペシャル3】「Playground」を魔改造!? ゲームデザイン授業への活用
PPTX
はじめての Unity
PPTX
VRコンテンツに自作デバイスを組み合わせると楽しい話
PDF
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景
PPTX
【Unity道場スペシャル 2017博多】無料アニメーションツールAnima2Dを使ってみよう
PPTX
KC3_Room2_9_6
Unity&unreal engineハンズオン資料 unreal_4.8
Unity&unreal engineハンズオン資料 unity
【Unity道場 幕張スペシャル3】「Playground」を魔改造!? ゲームデザイン授業への活用
はじめての Unity
VRコンテンツに自作デバイスを組み合わせると楽しい話
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景
【Unity道場スペシャル 2017博多】無料アニメーションツールAnima2Dを使ってみよう
KC3_Room2_9_6

Similar to 金沢工業大学電子計算機研究会新入生向けUnity講習会資料 (20)

PDF
IoT with Unity
PDF
【Unity道場 建築スペシャル】はじめてのUnity
PDF
ユニティちゃんだけじゃない! オープンソースとUnityの未来
PDF
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
PDF
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
PDF
Couchbase x unity
PDF
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
PDF
Webプログラマの為のUnity入門
PPTX
DeNA TechCon2019 How to implement live streaming client using Unity
PPTX
Unity入門ハンズオン
PDF
Unityと.NET
PDF
Unityではじめるオープンワールド入門 アーティスト編
PDF
誰でも今日から実践できるUnity x PlayFab(Demoパート)
PPTX
各種ゲームエンジンの紹介と利用について
PPTX
TouchDesigenr Beginners' workshop vol.003
PDF
ゲムつくプログラミング講座
PPTX
UE4 3Dゲーム制作入門 その1 : ベースプロジェクト作成編
PDF
初めてのVR/AR開発をUnityで
PPTX
Unity ゲーム開発
PPTX
Gadget in Pocket オフ会 incmplt LT
IoT with Unity
【Unity道場 建築スペシャル】はじめてのUnity
ユニティちゃんだけじゃない! オープンソースとUnityの未来
波に乗ってUnity3Dを使ってみているんだが (Ameba x Pixiv 合同勉強会LT)
Unity meets Kinect -Unity で NUI を扱ってみた- / 2015.06.23 at TechBuzz Space
Couchbase x unity
【Unite Tokyo 2018】トゥーンシェーダートークセッション#1『リアルタイムトゥーンシェーダー徹底トーク』
Webプログラマの為のUnity入門
DeNA TechCon2019 How to implement live streaming client using Unity
Unity入門ハンズオン
Unityと.NET
Unityではじめるオープンワールド入門 アーティスト編
誰でも今日から実践できるUnity x PlayFab(Demoパート)
各種ゲームエンジンの紹介と利用について
TouchDesigenr Beginners' workshop vol.003
ゲムつくプログラミング講座
UE4 3Dゲーム制作入門 その1 : ベースプロジェクト作成編
初めてのVR/AR開発をUnityで
Unity ゲーム開発
Gadget in Pocket オフ会 incmplt LT
Ad

金沢工業大学電子計算機研究会新入生向けUnity講習会資料