Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
1
第3回 「インタラクション」
あそびのデザイン講座
2
ボールが当たると消えるオブジェクト
第3回の授業「インタラクション」
3
今回は当たった時に相手が「消える」というコンピュータだから可能な「インタラクション」を作ります
前回はボールが当たった時には、単に跳ね返されたり、相手を倒したりしました
転がる「ボール」が当たると「インタラクション」を起こす仕掛けをつくります
4
この仕組みを使うとコンピュータゲームならではのいろいろな表現をつくることができます
5
2、Unityの「C#スクリプト」を書いてみよう
4、ボールが当たると消えるブロックをつくろう
3、Unityのエディター:MonoDevelopをつかう
5、消えるブロックを使ってレベルをつくろう
1、オブジェクトに「Physic Material」をセットする
今回の目標
6
まずは「Unityの基本操作」のおさらいです
復習してみましょう
7
1. File > New Scene でSceneをつくります
2. 「Save」で名前をつけてつくったSceneをセーブしておきましょう
Unityをひらきます
8
GameObject >3D Object > Cube でCubeをつくっていきます
「GameObject」でフロア(床)をつくりましょう
9
GameObject >3D Object > Cube でつくったCubeを変形させ組み合わせて、四角の枠とボールを作ります。
Cubeのサイズを変えてフロアを組みます
10
ボールをつくります
GameObject > 3D Object > Sphere で「ボール」をつくります色も「Material」をつくって、セットします
11
つくったボールに「Rigidbody」を追加します
Component > Physics > Rigidbody で「ボール」に「物理法則」をつけて、落下するようにします
「Use Gravity」にチェックマークを
つけると重力が働きます
12
Objectの「材質」をきめます
オブジェクトにセットする「材質」によって跳ね返り方が
変化します
13
ボールの材質を「Physic Material」(材質)でつくります
Asset >Create > Physic Material でつくります。「Physic Material」(材質)は「色」と同じ扱いの「Asset」です。
Asset欄にできたら名前を付けます
14
「Physic Material」欄をみてみます
Physic Material(材質)欄には、5種類のパラメータがあります
アイコンをシングルクリックするとInspector欄にPhysic Materialの
設定ウィンドウが開きます
15
inspector欄に「Physic Material」の設定メニューがあらわれます
・ Dynamic Friction 移動するオブジェクトにかかる摩擦 0=摩擦がない 1=すぐに停止・ Static Friction 静止してるオブジェクトにかかる摩擦 0=摩擦がない 1=動きにくい・ Bounciness 跳ね返りの大きさ 0=跳ね返らない 1=跳ね返る・ Friction Combine 衝突したオブジェクト間の摩擦・ Bounce Combine 衝突したオブジェクト間の跳ね返りの大きさ
https://docs.unity3d.com/jp/540/Manual/class-PhysicMaterial.html
摩擦を「0.6」バウンシネス「0.99」にすると
よく跳ねる「ゴムボール」のような材質になります
16
作った「Physic Material」をボールにあたえます
1. Asset内にできた「Physic Material」(材質)をドラッグしてボールに与えます。(直接ドラッグすることもできます)
2. セットするとComponentの「Sphere Collider」欄にMaterial(材質)が表示されます
17
跳ねるようになったか、確認してみましょう。
Physic Material(材質)欄の「Bounciness」を「1」に近づけ、Friction(摩擦)を「0」に近づけると、より跳ねるように変わります
思い通りの跳ね方になるように調整してみましょう
18
追加情報 「Physic Material」をフロアにも付けると弾み方が変わります
1. Asset内にできた「Physic Material」(材質)をドラッグしてフロアにも与えます2. Componentの「Box Collider」欄にMaterial(材質)が表示されます3. フロア独自の材質をつくってみましょう
19
次に「当たると消えるブロック」を作ってみよう
C#(シー・シャープ)でスクリプトを組みます
いよいよ「プログラム」に取り組みます!
20
ころがるボールがキューブに当たると、キューブが消えるようにします
当たって消すための「Cube」をつくり、ボールが転がるようにフロアをななめに傾けます
21
Unityの「C#」スクリプトを書きます
C#スクリプトは「Component (訳:構成成分)」の一つです
ゲーム内の「Object」に入れて、その挙動をコントロールします
各「Component 」 は「Inspector」欄に表示されます
C# Script
C# script C# Script
Object(キャラクターなど)
22
「当たるとobjectが消える」というC#のスクリプトをつくります
Asset >Create > C# Script をえらびます*スクリプトも「Material」(材質)、「色」と同じ1つの「Asset」です
23
C#のファイルに名前をつけて決定します
1. 「スクリプト」の名前はとても大切です(後から変更するのが大変です)大文字から始まる名前にします(記号などは使えません)
2. ここでは「Broken」という名前にします
C#スクリプトをつくると同時に名前を付けなくてはいけません。
24
C#のエディターを開きます
アセット欄の C# スクリプトをダブルクリックすると「VisualStudio」エディターが開きます
25
「あそびのデザイン講座」ではMono Develop社のエディターを使ってきましたが、
現在は同梱配布が終了したため、「Visual Studio」エディターを説明に使います
お知らせ
最新のUnityをダウンロードして使ってください
26
ひらくと、始めからこのように書かれています
void Start( ){ } と void Update( ){ }の部分は始めから書かれていますが、いまは使いません
消しても問題ありませんから、消しておきましょう
「//」の後ろにかかれた緑色の文章は、コメントと呼ばれ、プログラムには読み込まれない部分です一時的にプログラムを読み込ませなくしたり、説明を書いたりすることを「コメントアウト」と言います
27
そして、この部分を書きます
先ほどのStart(){ }とUpdate(){ }部分を消して・・・
ここを書きたします
すべての( )や{ }は、始まりのカッコと閉じるカッコの2つで対(つい)になっています{・・・{・・・プログラム内容}・・}のように、かならずカッコは対(つい)となるカッコで
閉じられなくてはいけません
28
当たると消えるスクリプトは以下のように書きます
using UnityEngine;using System.Collections;public class Broken : MonoBehaviour{
void OnCollisionEnter(Collision other){
if(other.gameObject.tag == "Ball"){
Destroy (gameObject, 0.2f);}
}}
これだけです
29
このスクリプトの1行目を見てみましょう
void OnCollisionEnter (Collision other){
「これは値を返さないメソッドです」の意味
メソッド(命令プログラム)ですこれは当たった時(Enter)に相手の持っているデータを
Collision型の変数otherに読み込む働きをします
データを入れる変数です。
・・・void OnCollisionEnter(Collision other){
if(other.gameObject.tag == "Ball"){Destroy (gameObject, 0.2f);}
}・・・
30
このスクリプトの2行目を見てみます
if(条件)もしこういうことなら・・ 変数otherに取り込んだgameObjectの「tag」が“Ball”ならば・・
if (other.gameObject.tag == "Ball")
". " (ドット)は " ~の"と読むとわかりやすいです
「= =」は「比べる」という意味です
・・・void OnCollisionEnter(Collision other){
if(other.gameObject.tag == "Ball"){Destroy (gameObject, 0.2f);}
}・・・
31
このスクリプトの3行目を見てみます
Destroy( オブジェクト,時間);(これを、この秒後に)消します。
このObjectを0.2秒後に
Destroy(gameObject, 0.2f) ;
「f」は小数点以下まである数字の値を表します。
・・・void OnCollisionEnter(Collision other){
if(other.gameObject.tag == "Ball"){Destroy (gameObject, 0.2f);}
}・・・
32
「Tag」ってなんだろう?
ここで「Tag」について説明します!
33
「Tag」はここにあります
「ボール」をクリックすると、Inspector欄の一番上の方に「tag」欄があります
「Tag」欄はここにあります
34
「Tag」の役目
「Tag」はゲーム内のオブジェクトを区別するために使います。
たとえば、シューティングゲームの場合、エネミーの弾にあたるのは「プレイヤーのTag」を持ったオブジェクトだけにできます
エネミーの弾は「エネミーのTag」のオブジェクトには当たらない(味方は破壊できない)、という処理が分かりやすく簡単にできます。
「Tag」「Tag」
相手が「Player」なら当たる
相手が「Enemy」なら当たる
35
「Ball」の「Tag」をつくって用意します
「Add Tag...」新しいTagをつくる場合は
ここをクリック
Tagの三角形の印をクリックするとtagの表があらわれますそこの一番下に「Add Tag」ボタンがあります
①
②
①
②
36
ボールのオブジェクトに「Ball」の「Tag」をつけます
「Add Tag...」をクリックすると そこが「Tag & Layers」の表にかわります
37
ボールのオブジェクトに「Ball」の「Tag」をつけます
「New Tag Name」があらわれます
そこの「+」をクリックします
「+」をクリックすると・・・
「Ball」と書いてSaveします
38
ボールのオブジェクトに「Ball」の「Tag」をつけます
Tagの三角形の印をクリックするとtagの表があらわれますつくられた「Ball」のTagをボールにセットします
39
「Broken」スクリプトを、消したいGameObjectにセットします
つくったスクリプトをセットしましょう!
40
「Broken」スクリプトを消したいブロックにセットします
Inspector欄にセットしたスクリプトがあるか確認します
41
ボールに当たるとブロックが消えることを確認してみましょう。
42
工夫するポイント
1、台の傾斜角度や跳ね返る割合を変えてみる
2、「消す」ことを連続させたり、たくさん作ってみる
3、転がすものをボール以外のモノに変えてみる
かんたんなインターラクションを使ってボールのコースを作ろう
第3回の講義 実習の時間!
43
作例
黄色いブロックが消えることで、ボールと赤い棒とのインタラクションを起こします
44
1、 作った「コース(レベル)」をみんなにみてもらいましょう
2、 自分が工夫した箇所をみんなに伝えましょう
3、 他の作品の良い点や、気になる部分、自分ならこうする、・・・というポイントを忘れずにメモしましょう
第3回の講座 実習の発表の時間!
45
実習項目
・ スロープをつくり、Rigidbody、Material、Physic Materialを持たせたオブジェクトをセットする・ コリジョンの判定を行う基本的な「C#スクリプト」を書いて、それによってオブジェクトを消す・ 「Tag」の概念を理解する
UnityのC#スクリプトを書いて、実際にインターラクトさせてみる
第3回 授業内容 「インターラクション」
目的
ボールとスロープ
1. キューブでステージを作り、プレイヤーのボール、ゴールを設置する2. 当たると消える、倒して他のものを動かす、というC#スクリプトを書いてゲームメカニックをつくる3. 実際に当たると消えるブロックを使ったコースをつくる
46
・ ステージにUnityの物理シミュレーションで大切な「Rigidbody」「Material」「Physic Material」をもたせたオブジェクトをセットしてボールとインターラクトさせる「あそび」を作れているか?
・ インターラクションの種類と使い方(消えることで何があらわれたのか)を評価- ボールを誘導する工夫 (ブロックの配置、図形のサイズ、カメラ位置)- 見た目の魅力と世界観とストーリー性など(色使い、UIの意匠、ゴールまでの工夫など)- インラクションのさせ方、方法、ユニークさ、タイミング、同期の工夫など- 複数のボールを用いることなど、努力がみとめるものは高評価
https://unity3d.com/jp/learn/tutorials/topics/physics
チュートリアル>物理演算:Unity の物理ベースのオプションを学んで、力学的な作用を発生させてみましょう
「Unity」の該当参照箇所
学習到達の指標と評価ポイント