ゲームツクール! 12回...

53
ゲームツクール! 12Unity5で使えるようになった機能をレビューしてみよう 2015/7/23 FAGStudio
  • date post

    13-Aug-2015
  • Category

    Technology

  • view

    141
  • download

    2

Transcript of ゲームツクール! 12回...

Page 1: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

ゲームツクール! 第12回 Unity5で使えるようになった機能をレビューしてみよう

2015/7/23 FAGStudio

Page 2: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

おすすめのUnity本

「Unity5」をはじめて学ぶ人向けのUnity本。 Unityのエディターの見方から基本操作やキャラクター操作まで1冊で全て学べます。

NEW!

Page 3: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

(復習)Unity4特徴について

Unity Freeに解放された機能 4.14 モバイル版への書き出し無償化 4.2 Navimesh 4.2 RealTime Shadow and more features・・

New System 4.0 Mecanim 4.3 2DSystem 4.6 uGUI

どんどんパワーアップ!!

Page 4: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Unity5の特徴について ・Unityの64bit対応 ・NVIDIA PhysX 3.3  (Rigidbodyなどで使われる物理エンジンの更新) ・NavMeshの更新  (Unity4からデータをアップデートした際にはNavMesh焼き直しが必須) ・ライティングシステムの更新 ・Mecanimシステムの更新

Page 5: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Unity4と比べてUnity5で追加されたこととは? ・「物理ベースシェーダ」や「Global     illumination」などの新しい機能の追加。 ・ Unity4ではPro版でしか使えなかった機能を   無料版に全て解放。

Page 6: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

今日は新しく使える機能をレビューしよう

Page 7: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

物理ベースシェーダーとは?

物理ベースシェーダーとは、鉄やプラスチック、木材など現実世界にある「材質」に従って反射係数や色の設定を入れることでリアルな絵作りを実現するシェーダーのことです。

Page 8: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

  おすすめのアセット

Page 9: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

   物理ベースシェーダーの設定方法

物理ベースシェーダーマテリアルをオブジェクトに適応させるだけでオブジェクトが物理ベースシェーダーマテリアルに対応して十分美しくなります。

Page 10: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Global illumination

Global illumination(GI) は、拡散反射光を光学的・物理学的に正確に扱うレンダリング技法のことです。 非常に写実的、つまり物理的に正しい表現が可能になります。

Page 11: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Global illumination Unity4までは、オブジェクトのマテリアルの特徴がライトで反射してほかのオブジェクトに色の影響を与えることはありませんでした。 しかし、Unity5からは現実世界のようにオブジェクト同士のマテリアルの特徴がライトに反射してほかのオブジェクトのマテリアルに影響を与えます。

Page 12: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

GIの使い方について

Page 13: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Scene Viewを「Irradiance」に設定します。

Floorの黄色がSphereに反射しているのがわかります。

Sphereの赤が反射しているのがわかります。

Page 14: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Staticでないオブジェクトは? (例えば動くキャラクターとか)

Page 15: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Reflection Probe

Page 16: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Reflection Probe

Page 17: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Reflection Probe

髪の毛にステージの赤が反射しています。

Page 18: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Mecanimのポイントについて OnStateEnter, OnStateUpdate,OnStateExitが追加されました。 これで、各ステートで実行したい内容を呼び出すことが簡単になりました。処理を発生させたいステートをクリックして「Add Behaviour」から処理を追加できます。

Page 19: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

<参考> Before Unity5

using UnityEngine; using System.Collections; public class AnimatorStateInfoSample: MonoBehaviour { Animator animator;   const string RUN_ANIMATION = "Base Layer.Run"; void Start() { this.animator = gameObject.GetComponent<Animator>(); } void Update() { AnimatorStateInfo stateInfo = this.animator.GetCurrentAnimatorStateInfo(0); if (stateInfo.nameHash == Animator.StringToHash(RUN_ANIMATION)) { Debug.Log("Run Animation"); } } }

ようは、いろいろ面倒でした。

Page 20: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

こんな感じ using UnityEngine; using System.Collections; public class JumpAction : StateMachineBehaviour {

// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Debug.Log ("She is about to stop."); }

// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Debug.Log ("She stops."); }

// OnStateExit is called when a transition ends and the state machine finishes evaluating this state override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Debug.Log("She finish stopping."); }

}

Page 21: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

このようにアニメーションのタイミングで呼ばれます

Page 22: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Personal版に解放されたその他機能について ・Occlusion Culling ・Image Effect ・Render Texture ・Movie Texture ・Navigation System

Page 23: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

    Occlusion Culling オクルージョンカリングは、他のオブジェクトに覆い隠されてカメラに映らなくなってしまったオブジェクトのレンダリングを無効化する機能です。

With Occlusion Culling

*キャプチャーはUnity公式ページのものを引用致しました。

Page 24: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Occlusion Culling

Page 25: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

カメラからは後ろから見えない

view from Camera

Page 26: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Occlusion Cullingの使い方

Page 27: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Occlusion Cullingの使い方

Page 28: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Occlusion Cullingの使い方

Page 29: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Occlusion Cullingの使い方

Page 30: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Image Effect

Page 31: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Image Effectの使い方 Assets -> Import Packages -> Effects ImageEffectsのScriptsフォルダーにあるスクリプトをMainCameraに追加します。

Page 32: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

RenderTexture カメラで映している映像がテクスチャーとして映し出されます。

Page 33: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

RenderTextureを追加 カメラの映像を映したいオブジェクトに貼り付ける。

Page 34: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Texture用のカメラを配置する

Page 35: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

「Target Texture」にRender Texture設定

Page 36: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

オブジェクトに映像が映ります。

Page 37: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Movie Texture Movie Textureは、動画(.mov、 .mpg、 .mpeg、 .mp4、 .avi、.asf形式のファイル)をUnityで使用することができます。

Page 38: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Movie Textureのサンプルスクリプト using UnityEngine; using System.Collections; public class ControlMovie : MonoBehaviour { public MovieTexture movieTexture; //Inspector viewから動画を設定 void Start() { GetComponent<GUITexture>().texture = movieTexture; movieTexture.Play(); // 動画再生する } void Update() { if (Input.GetButtonDown("Fire1")) { movieTexture.Pause(); // 動画を止める } else if (Input.GetButtonDown("Fire2")) { movieTexture.Play(); // 動画を再生する } } }

Page 39: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

NaviMeshについて

地形を把握して自動でルート検索(移動にかかる最短処理)を導くシステムになります。

Page 40: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

サンプルシーン

Page 41: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

ステージになっているオブジェクトをStaticにして、NavigationからステージをBakeします。 ちなみにUnity4とUnity5では内部的に使われるNaviMeshシステムが違うので互換性はありません。

Page 42: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

ステージが青くなる

Page 43: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

NavController.cs using UnityEngine; using System.Collections; public class NavController : MonoBehaviour {

private NavMeshAgent agent; void Start () {

agent = GetComponent<NavMeshAgent> (); } void Update () {

if (Input.GetMouseButtonDown (0)) { Ray screenRay = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(screenRay, out hit)){ agent.SetDestination(hit.point); } }

} }

AddComponent -> Navigation -> NavMeshAgent を移動するオブジェクトに追加してください

Page 44: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

ではステージに隙間がある場合には?

Page 45: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

OffMeshLinkについて Navigation機能を使った通常の移動は陸続きの移動(歩行移動)しかできない(つまりステージとステージの間に隙間がある場合は移動できない)のですがOffMeshLinkを使えば、Navigationシステムを使って飛び越えることができます。 最短ルートもこの隙間を飛び越えて移動することも計算に入るようになります。

Page 46: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Cube1にoff MeshLinkを追加

Page 47: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

Cube1の設定について

Page 48: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

これで隙間を飛び越えるようになります

Page 49: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

動いている障害物を回避する

Page 50: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

NavMeshObstacleについて Navigationを使う時はStaticにして使うのですが、Staticにせずにオブジェクトを動かしたい時にはNavMeshObstacleを利用します。 このNavMeshObstacleは、障害物に追加します。 *Stageは、Navigation->Bakeしていることが前提となります。

Page 51: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

*このようなスクリプトで障害物を動かしています。

using UnityEngine; using System.Collections; public class Shaking : MonoBehaviour { // Update is called once per frame void Update () { transform.position = new Vector3(Mathf.PingPong(Time.time,3),transform.position.y,transform.position.z);     } }

Page 52: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

避けるようになります。

Page 53: ゲームツクール! 12回 Unity5で使えるようになった機能をレビューしてみよう

HAPPY DEVELOPMENT :D