SlideShare uma empresa Scribd logo
1 de 111
Baixar para ler offline
夏の「中高生向け
プログラミング講座」
~僕たち私たちにもできるUNITYプログラミング入門講座~
PART 1
~ゲームをつくろう~
所属:専門学校岡山情報ビジネス学院
名前:山本優希
2016/8/8 1
目次
1. はじめに
2. Unityの画面説明
3. Cubeを設置しよう
4. 床を設置しよう
5. PLAYERを動かそう
6. Scene Load
7. ジャンプしてみよう
8. Stageを作ろう
9. カメラがついてこない
10. Playerの調節
11. ゴールポイントを作ろう
12. ゴールシーンを作ろう
13. Stageを作りこもう
2
この2日間で
目標は「3Dゲームを作る」です。
その為に
1日目は「Unityの操作に慣れながらゲームを作る」
2日目は「ユニティちゃん(人型の3Dモデル)を使ったゲームを作る」
ことを目標にしています。
3
はじめに
はじめまして、中学生・高校生のみなさん。
今回はみなさんにゲーム作りをしてもらいながらプログラミングを学ん
でもらいたいと思っています。
あ。今、「難しそうだな・・・」と思った人。そんなことありませんよ。
今回はみなさんがよく知っているゲームをベースに作っていきますか
ら、安心してください。
それではさっそく始めていきましょう!
4
なんでUNITYを使うの?
Unityは現在大手のゲーム会社に使用されているソフトです。
その最大の特徴は、アイデアを簡単にゲームに反映できること。
つまり、ゲームを簡単に作れることです。
今回はそのUnityを使ってゲーム作りを楽しみましょう。
では、まずは画面説明です。
5
UNITYを起動しよう その1
パソコン画面にある下の図のUnityのアイコンをダブルクリックして、
Unityを起動します。
6
UNITYを起動しよう その2
ダブルクリックすると下のような画面が出ます。
今回は新しくUnityでゲームを作るので、右上の「NEW」をクリックします。
7
UNITYを起動しよう その3
クリックすると下の画面になると思います。ココが「3D」になっているのを確認
して「Create project」をクリックし、Unityを起動しましょう。
8
UNITYを起動しよう その4
もし、「3D」になっていなかったら、 「3D」をクリックしましょう。
今回は3Dゲームを作るのでここの設定は「3D」でなければいけません。
9
UNITYを起動しよう その5
10
Unity起動
UNITYの画面説明
11
UNITYの画面説明 その1
Scene
(シーンビュー)
Game
(ゲームビュー)
ゲーム内を自由に見ることが出
来ます。あとでシーンビューでの
操作説明をします。
実際の
ゲーム画面が確認できます。
12
UNITYの画面説明 その2
Hierarchy
(ヒエラルキー)
Project
(プロジェクト)
ゲーム内に設置されている素材
の一覧が表示されます。
ゲームに使用する素材が
表示されます。
13
UNITYの画面説明 その3
Inspector
(インスペクター)
ゲームの再生ボタンです。
ゲーム素材の情報が
表示されます。
14
UNITYの画面説明 その4
ゲームを再生できます。
ゲームを一時停止
できます。
再生ボタンの説明
15
ゲームオブジェクトを設置しよう
おまたせしました。やっとゲームを作っていきたいと思います。
まず、
このゲーム世界はまだ物が何も無いのでCubeを作りたいと思います。
16
CUBEを設置しよう その1
Unityの画面説明が終わったところで、さっそく何か置いてみましょう。
さきほど説明した「Hierarchy(ヒエラルキー)」画面の上で右クリック
をしてみてください。すると小さな一覧表が出ます。
英語ばっかりでよく分かりませんね・・・。
今回はその中の「3D Object」をクリックしてください。
そうするとまた小さな一覧が出ます。
その中の「Cube」をクリックしてみてください。
17
「Cube」
出た!!
18
ツールバー/各ボタンの役割
画面の見え方変更ボタン
• シーンビュー内の特定の場所をク
リックしたままドラッグする
• クリックした地点を中心に視点を上
下左右に変更できる
19
ツールバー/各ボタンの役割
オブジェクト移動ボタン
• シーンビュー内のオブジェクトの配
置をドラッグアンドドロップで変更す
る
• オブジェクトの中心から3方向に伸
びる矢印の先端をドラッグすると矢
印方向に移動できる
• オブジェクトの中心の立方体をド
ラッグすると自由に移動できる
20
ツールバー/各ボタンの役割
オブジェクト回転ボタン
• シーンビュー内のオブジェクトを3軸
方向それぞれに回転させる
• 3方向に伸びる矢印の代わりにオブ
ジェクトの中心を包む3つの環が出
現する
• 環をドラッグすると任意の向きに変
更できる
21
ツールバー/各ボタンの役割
オブジェクト拡縮ボタン
• シーンビュー内のオブジェクトを3軸
方向それぞれに拡縮させる
• 3方向に伸びる矢印の代わりに3方
向にキューブが伸びる
• 先端のキューブをドラッグするとオ
ブジェクトがその方向に伸び、かつ、
中心から同じサイズ分反対側にも
伸びる
22
ツールバー/各ボタンの役割
オブジェクト拡縮ボタン
• シーンビュー内のオブジェクトを3軸
方向それぞれに拡縮させる
• 3方向に伸びる矢印の代わりに3方
向にキューブが伸びる
• 先端のキューブをドラッグするとオ
ブジェクトがその方向に伸び、かつ、
中心から同じサイズ分反対側にも
伸びる
23
見え方の変更
右クリック
• シーンビュー内で右クリックしたまま
ドラッグすると、自分視点を中心に
シーン内全体の見え方を上下左右
に移動させられる
24
見え方の変更
シーンギズモ
• シーンビューの視野角や投映モー
ドを一発で素早く変更する(俯瞰、
右、左)
• 円錐(ラッパ)をクリックするとその
向きからの見た目に切り替わる
• 円錐の中心の立方体をクリックする
と奥行き感の有無が切り替わる
• どこを向いているかわからなくなっ
たら、Shiftキーを押しながら円錐の
中心の立方体をクリックすれば少し
見下ろした状態に戻る
25
CUBEを設置しよう その2
それでは一度、今操作しているCubeを消して新しいCubeを作ってみ
てください。
消し方はCubeを選択している状態で「Deleteキー」を押したら消えま
す。
26
CUBEを設置しよう その3
「Cube」が出ましたね。ここでこの「Cube」の設定をします。
画面右の「Inspector」を見てください。
このCubeをプレイヤーとして操作したいので、
「Player」と名前を付けます。
そして「Transform」にある「Position」の「Y」に「2」と入力します。
あとで地面を設置するのでちょっと高いところに設置します。
27
CUBEを設置しよう その4
28
CUBEを設置しよう その5
それではここでゲームを再生してみましょう。
画面上の「再生ボタン」をクリックしてみてください。
29
CUBEを設置しよう その6
シ~ン
30
CUBEを設置しよう その7
何も起こりませんね・・・。
ほとんど何も置いてないので当然と言えば当然ですが・・・。
再生ボタンをもう一度押すとゲームを停止できます。
そういえばこのCube空中に浮いたままなので、重力を設定しましょう。
重力設定をする「Rigidbody」をCubeに追加設定します。
31
CUBEを設置しよう その8
PlayerのInspectorの中にある「Add Component」をクリックします。
そうするとまた小さな一覧表が出ます。
この中の「Physics」をクリックします。
一覧表の中身が変わりましたね。
その一番上にある「Rigidbody」をクリックします。
32
CUBEを設置しよう その9
①
②
③
33
CUBEを設置しよう その10
これで重力が設定できました。
では再生してみましょう。
画面のCubeが落ちていったらOKです。
もう一度再生ボタンを押してゲームを停止させ、次に進みましょう。
34
床を設置しよう その1
さて、この世界にはまだ地面がありませんので地面を置きましょう。
もう一度「Hierarchy(ヒエラルキー)」画面の上で右クリックをして
「Cube」を作ってください。
作ったCubeの名前を「Ground」と設定して
「Scale」の「X」を「20」と入力します。
35
床を設置しよう その2
できた
36
PLAYERを動かそう その1
さて、この地面の上を動いてみようと思います。
つまり、プログラムを書いていきます。
まずはプログラムのファイルを作成します。
画面説明で説明した「Project」の上で右クリックをします。
一覧が出るので上から1番目の「Create」をクリックします。
更に出た一覧の上から2番目「C# Script」をクリックします。
37
PLAYERを動かそう その2
38
PLAYERを動かそう その3
はい。たったの3クリックでファイルができましたね。
このプログラムを書くファイルを「スクリプト(Script)」と呼びます。
さて、ここで重要な作業をします。
間違えるとプログラムが動かなくなります。
さてその作業の内容は、「ファイル名の設定」です。
作ったスクリプトに「Move」と名前をつけます。
設定したらダブルクリックしてスクリプトファイルを開きましょう。
39
PLAYERを動かそう その4
40
PLAYERを動かそう その5
ダブルクリックをするとプログラムファイルの編集ソフトが起動します。
下の画面のようになればOKです。
41
PLAYERを動かそう その6
ここで確認してください。
赤枠の中の名前が
先程設定したファイル名に
なっているか
確認してください。
一致していないと
プログラムが動きません。
42
PLAYERを動かそう その7
名前の一致が確認できたらプログラムを書いていきましょう。
void Update(){
}
の中に次の黒字になっているプログラムを書いてみてください。
43
PLAYERを動かそう その8
// Use this for initialization
void Start(){
}
// Update is called once per frame
void Update(){
float h = Input.GetAxisRaw ("Horizontal");
if(h != 0){
transform.Translate (h * Time.deltaTime, 0, 0);
}
}
44
PLAYERを動かそう その9
// Use this for initialization
void Start(){
}
// Update is called once per frame
void Update(){
float h = Input.GetAxisRaw ("Horizontal");
if(h != 0){
transform.Translate (h * Time.deltaTime, 0, 0);
}
}
45
キーボードなどの横入力を取得
「if」とは「もしも○○だったら」という意味です。今回は1行前で取得
した「h」の数値が0以外だったらという意味です。
解説
PLAYERを動かそう その10
// Use this for initialization
void Start(){
}
// Update is called once per frame
void Update(){
float h = Input.GetAxisRaw ("Horizontal");
if(h != 0){
transform.Translate (h * Time.deltaTime, 0, 0);
}
}
46
「Time.deltaTime」とは1フレームごとの経過時間のことです。
フレームとはコンピュータの処理のことです。(以下読み飛ばしOK)
たとえばコンピュータがこの処理を1秒間に100回実行(100フレーム)したとします。する
と、右か左のちらのキーボードを1秒押すだけであっという間に100移動することになり
ます。(結構遠くまで行く)
Unity世界での「1移動」とは「1m移動」という意味なので秒速100mで動くプレイヤーに
なってしまいます。そこで、先程説明した「Time.deltaTime」を使います。コンピュータの
処理回数が仮に 100フレームだとすると、「Time.deltaTime」には0.01(1秒の100分の1)
の値が入っています。
これを使用して1秒間移動すると、
h(1もしくは-1) * Time.deltaTime(1秒/フレーム数) * 1秒間(フレーム数) となり、
1もしくは-1の移動ができます。
というわけで、移動や回転には「Time.deltaTime」を使用するのをお勧めします。
transform.Translateは移動に使われるプログラムです。
今回は横(X)方向に移動させるため、(x,y,z)のxの場所に数値を入れます。
hには「1」か「-1」が入力されています。
右キーを押すと「1」が、左キーを押すと「-1」が入力されます。
← 左 -1 1 右 →
解説
PLAYERを動かそう その11
入力が出来たら「F7」を押して入力したプログラムを上書き保存します。
エラーが出ずに上書き保存が出来たら、Unity画面に戻ってみましょう。
もしエラーが出たら・・・手を上げてスタッフに聞いてみてください。
さて、これから「Player」にこのプログラムを埋め込みます。
やり方はとっても簡単です。
「Project」の中にある「Move」スクリプトを「Hierarchy」の中の
「Player」にドラッグ&ドロップすればOKです。
47
PLAYERを動かそう その12
48
PLAYERを動かそう その13
さて、ドラック&ドロップができたら再生してみましょう。
キーボードの「左キー」「右キー」を押せば動きますよね?
49
落ちたら落ちっぱなし
とりあえず動きましたが一度落ちると永遠に戻ってきませんね・・・。
これはゲームとしてあまりにも不細工なので落ちたらゲーム内で勝手
にリセットさせましょう。
そのために、「Scene」のロードをします。
説明するよりやってもらった方が分かると思います。
まずはさっきの「Move」スクリプトを開いてみましょう。
50
SCENE LOAD その1
「Scene」のロードをするにはプログラムを書きたします。
まずは一番上に書いてある
using UnityEngine;
using System.Collections;
の下に次のプログラムを書きます。
51
SCENE LOAD その2
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class Move : MonoBehaviour {
// Use this for initialization
void Start () {
}
52
SCENE LOAD その3
今書いてもらったプログラムで「Scene」に関する機能を使えるようにで
きました。
それでは本命の「Scene」のロードのプログラムを書きましょう。
53
SCENE LOAD その4
void Update () {
float h = Input.GetAxisRaw ("Horizontal");
if(h != 0){
transform.Translate (h * Time.deltaTime, 0, 0);
}
if (transform.position.y < -1) {
SceneManager.LoadScene ("Main");
}
}
54
SCENE LOAD その5
void Update () {
float h = Input.GetAxisRaw ("Horizontal");
if(h != 0){
transform.Translate (h * Time.deltaTime, 0, 0);
}
if (transform.position.y < -1) {
SceneManager.LoadScene ("Main");
}
}
55
今回のifはPlayerの位置(ポジション)のy(高さ)が-1より低い場所に
行ったらという意味です。
シーンをロードします。
シーンのロードとはゲームで言うところのタイトル画面から
セーブデータの選択画面に移動するようなものです。
今回は再び「Main」のシーンに飛ぶのでリセットするのと同じように
なります。
解説
SCENE LOAD その6
入力が出来たらF7で保存をしてUnity画面に戻りましょう。
プログラムの設定はこれでバッチリです。
次に現在の「Scene」を保存しましょう。
画面左上の「File」をクリックし、「Save Scene」をクリックます。
56
SCENE LOAD その7
57
SCENE LOAD その8
Sceneの名前を入力して保存します。
今回は「Main」と入力して保存しましょう。
58
SCENE LOAD その9
59
SCENE LOAD その10
保存が出来たら最後の作業です。
左上の「File」から「Build Settings」をクリックします。
すると「Build Settings」のセッティング画面が立上ります。
そこに「Project」内の「Main」をドラッグ&ドロップします。
60
SCENE LOAD その11
①
②
61
SCENE LOAD その12
これでOKです。
それではゲームをプレイしてみましょう。
「Build Settings」のセッティング画面を消して、再生ボタンを押してく
ださい。
セッティング画面は右上の「×」ボタンを押すと消えます。間違って
Unity画面を消さないように注意してくださいね。
落ちたらリセットされて最初に戻ったらOKです。
62
ジャンプしてみよう その1
さあ、ここでジャンプをしてみましょう。
某有名な黄色いヘルメットの配管工おじさんもジャンプできますから、
私たちもがんばっていきましょう。
ジャンプのプログラムは次のプログラムを、先程書いた「Move」プログ
ラムに入力してみてください。
63
ジャンプしてみよう その2
public class Move : MonoBehaviour {
bool jumpFlg = true;
// Use this for initialization
void Start () {
}
64
ジャンプしてみよう その3
public class Move : MonoBehaviour {
bool jumpFlg = true;
// Use this for initialization
void Start () {
}
65
連続ジャンプを防ぐためにbool型の「変数」というものを準備しておきます。
変数とはプログラム内に準備する「情報を保存する箱」のことです。
今回はこの箱の中に「true」を保存しておきます。
ジャンプをするときにこの箱の中を確認し「true」だったらジャンプの処理を
して、そうでなかったらジャンプをさせないようにします。
これを設定するのは連続ジャンプを防ぐためです。
解説
ジャンプしてみよう その4
if (transform.position.y < -1) {
SceneManager.LoadScene ("Main");
}
if (Input.GetKeyDown (KeyCode.Space) && jumpFlg) {
GetComponent<Rigidbody> ().AddForce (0, 300, 0);
jumpFlg = false;
}
}
void OnCollisionEnter(Collision col){
jumpFlg = true;
}
}
66
ジャンプしてみよう その5
if (transform.position.y < -1) {
SceneManager.LoadScene ("Main");
}
if (Input.GetKeyDown (KeyCode.Space) && jumpFlg) {
GetComponent<Rigidbody> ().AddForce (0, 300, 0);
jumpFlg = false;
}
}
void OnCollisionEnter(Collision col){
jumpFlg = true;
}
}
67
「Input.GetKeyDown」はキーボードの押された瞬
間を判定しています。ですからこの場合は、
「スペースキーを押した瞬間に」となっています。
さっき説明した「true」だったらの変数です。
隣りにある「&&」は「この2つの条件が両方とも満た
されたとき」という意味です。
解説
ジャンプしてみよう その6
if (transform.position.y < -1) {
SceneManager.LoadScene ("Main");
}
if (Input.GetKeyDown (KeyCode.Space) && jumpFlg) {
GetComponent<Rigidbody> ().AddForce (0, 300, 0);
jumpFlg = false;
}
}
void OnCollisionEnter(Collision col){
jumpFlg = true;
}
}
68
「GetComponent」はUnityで良く使用します。インスペクターに表示されている情報を取っ
てくるなどのことができます。今回は「Player」の「Rigidbody」の情報を取得してきます。
「AddForce」は名前の通り「力を加える」ことが出来ます。
今回はジャンプなので(x,y,z)のyの方向に300力を加えます。
解説
連続ジャンプができないように、
1回ジャンプしたらジャンプができない
ように「jumpFlg」の中に「true」以外の
物として「false」を入力しておきます。
ジャンプしてみよう その7
if (transform.position.y < -1) {
SceneManager.LoadScene ("Main");
}
if (Input.GetKeyDown (KeyCode.Space) && jumpFlg) {
GetComponent<Rigidbody> ().AddForce (0, 300, 0);
jumpFlg = false;
}
}
void OnCollisionEnter(Collision col){
jumpFlg = true;
}
}
69
「OnCollisionEnter」は何かが当たった時に行われる処理です。
今回はジャンプに使いますので、床に当たったら再びジャンプで
きるように、jumpFlg変数の中にtrueを入力し直します。
解説
ジャンプしてみよう その8
入力出来たら「F7」で保存してUnity画面で再生です。
「スペースキー」を押すとジャンプします。
ぴょん、ぴょん、ぴょん
もう馴れてきましたか?その調子ですっ!
さて、ジャンプもできたところで、次はステージを作ってみましょう。
70
STAGEを作ろう その1
ではステージを作ってみましょう。
今回は床を大量生成するため、「Prefab(プレハブ)」機能を使います。
プレハブは一度設定したゲーム内の物をProject内に保存することが
出来る機能です。
たとえば一度敵として設定した敵キャラをプレハブ化し、土管から大量
に生産することだってできます。
いや~プレハブ便利ですね~。ではプレハブの作り方を説明します。
Hierarchyにある「Ground」を「Project」へ、ドラッグ&ドロップします。
71
STAGEを作ろう その2
72
STAGEを作ろう その3
では今度はプレハブ化した「Ground」を「Hierarchy」にドラッグ&ド
ロップしてみましょう。
ドラック&ドロップでいくらでも複製できます。
あとは「Position(位置)」や「Scale(大きさ)」を変えてステージを作っ
てみましょう。
73
STAGEを作ろう その4
できた
74
カメラがついてこない その1
そういえば、カメラが「Player」を追いかけてくれません。
カメラとは実際のゲーム画面用の景色を撮影してくれているものです。
Hierarchyにある「Main Camera」から見えている景色が実際のゲー
ム画面に映っています。
「Player」が画面外に出ると見えなくて操作がしづらくなりますね。
カメラがついてくるようにプログラムに設定しましょう。
「Move」スクリプトに次のプログラムを追加してください。
75
カメラがついてこない その2
public class Move : MonoBehaviour {
public GameObject cameraPosi;
bool jumpFlg = true;
// Use this for initialization
void Start () {
}
76
カメラがついてこない その3
public class Move : MonoBehaviour {
public GameObject cameraPosi;
bool jumpFlg = true;
// Use this for initialization
void Start () {
}
77
カメラの情報を取得したいのでカメラ用の変数を用意しておきます。
「public」とは「公(おおやけ)」という意味があり、外から情報を確認できたり、操作できた
りします。どういう意味かというと、変数の前にこの「public」を書いておけばプログラムで
いちいち数値を入力しなくても、Unity画面から変数の中を操作することが出来ます。
その操作はあとでしますので、いまはとりあえず「そういうもんなんだなぁ」と思っておい
てください。
解説
カメラがついてこない その4
if (Input.GetKeyDown (KeyCode.Space) && jumpFlg) {
GetComponent<Rigidbody> ().AddForce (0, 300, 0);
jumpFlg = false;
}
cameraPosi.transform.position =
new Vector3 (transform.position.x, transform.position.y, -10);
}
78
カメラがついてこない その5
if (Input.GetKeyDown (KeyCode.Space) && jumpFlg) {
GetComponent<Rigidbody> ().AddForce (0, 300, 0);
jumpFlg = false;
}
cameraPosi.transform.position =
new Vector3 (transform.position.x, transform.position.y, -10);
}
79
ここではカメラの位置(ポジション)を新しく上書きしています。
上書きする場合は、新しい値を入力するため「new」を使用します。
次に、「Vector3」について説明したいと思います。
「Vector3」とは3つの数値を(x,y,z)のように保存しておける変数のことです。
たとえば「Vector3」型のpositionに新しい値を代入したいときには
position = new Vector3(x, y, z) ; x・・・左右 y・・・上下 z・・・前後にそれぞれ対応しています。
と入力すれば位置を変更することが出来ます。
今回は左右と上下に移動する「Player」を追っていかなければならないのでxとyの値は常に「Player」
のxとyを代入し、zは初期位置の「-10」を代入し続けます。
解説
カメラがついてこない その6
入力出来たら保存してUnityに戻りましょう。
戻ったら「Hierarchy」の「Player」をクリックしてInspectorの中身を見
てみましょう。
「Player」に埋め込んでいる「Move」の中に「Camera Posi」という項
目があると思います。
そこに「Hierarchy」の「Main Camera」をドラッグ&ドロップします。
80
カメラがついてこない その7
81
PLAYERの調節 その1
ついでに「Player」の調整をしましょう。
Playerの「Inspector」画面にある「Rigidbody」を調整します。
「Rigidbody」内にある「Constraints」の左にある マークをクリック
します。
右の図のように項目が出ます。
そこにあるチェック項目をクリックして
右の図のようにすればOKです。
82
PLAYERの調節 その2
今設定してもらった内容は「外から力が加わっても動かないでくれ」と
いう設定です。
上の項目の「Freeze Position」は位置です。
その「z」にチェックを入れてもらったので「Player」は前後(奥)には動
かなくなりました。
下の項目の「Freeze Rotation」は向いている角度です。
これの全てにチェックを入れているので「Player」は回転したり傾いた
りしなくなりました。
83
PLAYERの調節 その3
それともう1つ。
「Move」スクリプトの中に次のプログラムを書きくわえましょう。
プログラム内に「moveSpeed」という変数を「public」で宣言して作っ
ちゃいましょう。
「public」にすることで、Unity画面からでも数値を変更することが出来
ます。(いや~便利ですね)
これで「moveSpeed」の数値を変えれば移動速度が変わります。
84
PLAYERの調節 その4
public class Move : MonoBehaviour {
public GameObject cameraPosi;
public float moveSpeed = 1;
bool jumpFlg = true;
// Use this for initialization
void Start () {
}
85
PLAYERの調節 その5
public class Move : MonoBehaviour {
public GameObject cameraPosi;
public float moveSpeed = 1;
bool jumpFlg = true;
// Use this for initialization
void Start () {
}
86
移動速度用の変数を「public」で作ります。前にも言いましたが、「public」なので、Unity
画面から変更できます。らくちん、らくちん♪
ただ最初の値としてとりあえず「1」と入力しておきましょう。
floatの説明(飛ばしてもOK)
「float」は小数を保存できる変数のことです。
数値を保存できる変数は他に「int」というものがありますが、「int」は「整数」のみ保存で
きるため、微妙な調整ができるように今回は「float」を使っています。
PLAYERの調節 その6
void Update () {
float h = Input.GetAxisRaw ("Horizontal");
if(h != 0){
transform.Translate (moveSpeed * h * Time.deltaTime, 0, 0);
}
if (transform.position.y < -1) {
SceneManager.LoadScene ("Main");
}
87
PLAYERの調節 その7
void Update () {
float h = Input.GetAxisRaw ("Horizontal");
if(h != 0){
transform.Translate (moveSpeed * h * Time.deltaTime, 0, 0);
}
if (transform.position.y < -1) {
SceneManager.LoadScene ("Main");
}
88
さっき作った変数を移動数値に掛けます。(飛ばしてOK)
これによって、
移動速度 * h(1か-1) * Time.deltaTime(1秒/フレーム数100) * 1秒間(フレーム数100)
になるので、+か-の移動速度分だけ移動するようになります。
ゴールポイントを作ろう その1
ところで、このゲームにはまだゴールがありませんね?
ゴールポイントを作って「ゴール!!」と表示させましょう。
Hierarchyで「Cube」を作って「GoalPoint」と名前をつけましょう。
あとはゴールと分るように色をつけましょう。
Projectで右クリックをして「Create」から「Material」を作ってください。
89
ゴールポイントを作ろう その2
90
ゴールポイントを作ろう その3
出来上がった「Material」にも「Goal Point」と名前をつけましょう。
名前をつけたらMaterialのInspector画面を見てみましょう。
上にスポイトのようなマークがありますね?
そのマークの隣をクリックしてみてください。
すると色を選べるようになります。
この色を自分の好きな色に変えてみてください。
91
ゴールポイントを作ろう その4
92
色が決まったら「Material」を「Hierarchy」内の「GoalPoint」に
ドラッグ&ドロップしてください。
ゴールポイントを作ろう その5
93
ゴールポイントを作ろう その6
94
ゴールポイントを作ろう その7
色がついた
95
ゴールポイントを作ろう その8
さて次は「GoalPoint」専用のスクリプトを作ります。
「Project」に新しいスクリプトを作って「GoalPoint 」と名前をつけます。
名前をつけたらスクリプトを開いて次のプログラムを入力してください。
96
ゴールポイントを作ろう その9
using UnityEngine;
using System.Collections;
using UnityEngine.SceneManagement;
public class GoalPoint : MonoBehaviour {
97
ゴールポイントを作ろう その10
// Update is called once per frame
void Update () {
}
void OnCollisionEnter(){
SceneManager.LoadScene ("Goal");
}
}
98
ゴールポイントを作ろう その11
できたら保存してUnityに戻りましょう。
「Project」にある「GoalPoint」スクリプトを「Hierarchy」内の「GoalPoint」
のCubeにドラッグ&ドロップしましょう。
ドラック&ドロップできたら「Ctrlキー」と「Sキー」を同時押ししてシーン
の保存をしましょう。
99
ゴールシーンを作ろう その1
さて、後一仕事です。
ゲームをクリアすると、「ゲームクリア!!」とか「おめでとう!」と書い
てある画面(シーン)に変わります(移動します)よね?
というわけで、次はゴール用のシーンを新しく作ってみましょう。
左上の「File」から「New Scene」をクリックして新しいシーンを作ります。
100
ゴールシーンを作ろう その2
101
ゴールシーンを作ろう その3
全部無くなったように見えますが、大丈夫です。安心してください。
Project内の「Main」にさっきまでのシーンは保存されていますから。
さて、あとひとふんばりです。頑張っていきましょう。
「Hierarchy」で「UI」をクリックして「Text」をクリックします。
これで文字が表示できるようになりました。
102
ゴールシーンを作ろう その4
103
ゴールシーンを作ろう その5
さて、これからこのTextの設定をしていきます。
「Inspector」内の「Rect Transform」の
「Pos X」を「0」、 「Pos Y」を「0」、 「Pos Z」を「0」 と設定します。
ゲーム画面の真ん中に「New Text」と表示されましたね。
次に「Inspector」内の「Text」にゴールした時のメッセージを入力しま
す。
今回私は「ゴール」とシンプルに書いておきます。
104
ゴールシーンを作ろう その6
105
ゴールシーンを作ろう その7
字が小さいですね・・・。
字を大きくしましょうか。
まずは先程テキストを入力した「Text」の少し下にある「Font Size」を
「60」に変更しましょう。
おや、字が消えましたね?
それを解決するために、もうひと作業しましょう。
ちょっと下にある項目の
「Horizontal Overflow」を「Overflow」に
「Vertical Overflow」を「Overflow」に
設定します。
106
ゴールシーンを作ろう その8
107
ゴールシーンを作ろう その9
今設定してもらった「Overflow」は、
「文字の大きさが表示するための「Text」の範囲より大きくなっても表
示させて」という意味です。
さっき文字が消えたのは、フォントのサイズを60にして「Text」の範囲
より大きくなってしまったからです。「Overflow」の設定をしていないと
フォントサイズを大きくしたときに消えてしまうことがあるので覚えてお
くといいでしょう。
108
ゴールシーンを作ろう その10
さて、設定が終わったら「Ctrlキー」と「Sキー」を同時押ししてシーンの
保存をしましょう。
最初にあったシーンの名前を入力する作業をします。
今回は「Goal」と入力して保存しましょう。
保存が出来たら「File」から「Build Setting」を開いて「Project」内にある
「Goal」シーンをドラッグ&ドロップしましょう。
109
ゴールシーンを作ろう その11
「Project」内にある「Main」のシーンをダブルクリックしてさっきのシーン
に戻りましょう。
戻ったらゲームをスタートしてゴールポイントに当たって正常に起動す
か確かめてみましょう。
さっき作った「Goal」シーンに移動出来たらOKです。
110
STAGEを作りこもう
今日はここまでです。
が、明日もあるので今日の残り時間はステージの作りこみをしましょう。
床の長さ調節して、長くして、ゴールを設置して、自分だけのステージ
を作りましょう。
一日目 おつかれさまでした。
111

Mais conteúdo relacionado

Mais procurados

2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d
Hiroshi Oyamada
 
Photon勉強会(クライアントサイド)2015/8/4 発表資料
Photon勉強会(クライアントサイド)2015/8/4 発表資料Photon勉強会(クライアントサイド)2015/8/4 発表資料
Photon勉強会(クライアントサイド)2015/8/4 発表資料
GMO GlobalSign Holdings K.K.
 
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
 Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_ Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
Unity Technologies Japan K.K.
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II Processingによるアニメーション
Atsushi Tadokoro
 

Mais procurados (18)

Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d
 
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
 
【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう【Unity道場 2月】シェーダを書けるプログラマになろう
【Unity道場 2月】シェーダを書けるプログラマになろう
 
Photon勉強会(クライアントサイド)2015/8/4 発表資料
Photon勉強会(クライアントサイド)2015/8/4 発表資料Photon勉強会(クライアントサイド)2015/8/4 発表資料
Photon勉強会(クライアントサイド)2015/8/4 発表資料
 
Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料
 
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介
 
openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001
 
ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI - ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI -
 
Unityティーチャートレーニングデイ -認定アソシエイト編-
Unityティーチャートレーニングデイ -認定アソシエイト編-Unityティーチャートレーニングデイ -認定アソシエイト編-
Unityティーチャートレーニングデイ -認定アソシエイト編-
 
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそうビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
ビジュアルスクリプティングで始めるUnity入門1日目 プレイヤーを動かそう
 
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーションビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
ビジュアルスクリプティングで始めるUnity入門2日目 ゴールとスコアの仕組み - Unityステーション
 
Unity勉強会ハンズオン
Unity勉強会ハンズオンUnity勉強会ハンズオン
Unity勉強会ハンズオン
 
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
 Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_ Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
 
Android gameprogramming
Android gameprogrammingAndroid gameprogramming
Android gameprogramming
 
深掘りARKit
深掘りARKit深掘りARKit
深掘りARKit
 
Interactive Music II Processingによるアニメーション
Interactive Music II ProcessingによるアニメーションInteractive Music II Processingによるアニメーション
Interactive Music II Processingによるアニメーション
 
㉔cocos2dでゲームを作ろう!その2
㉔cocos2dでゲームを作ろう!その2㉔cocos2dでゲームを作ろう!その2
㉔cocos2dでゲームを作ろう!その2
 

Destaque

Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor Extended
Masamitsu Ishikawa
 

Destaque (7)

Unity入門講座その3
Unity入門講座その3Unity入門講座その3
Unity入門講座その3
 
Extending the Unity Editor Extended
Extending the Unity Editor ExtendedExtending the Unity Editor Extended
Extending the Unity Editor Extended
 
Unity入門講座その2
Unity入門講座その2Unity入門講座その2
Unity入門講座その2
 
Unity入門講座その1
Unity入門講座その1Unity入門講座その1
Unity入門講座その1
 
【 #Unity会 】このUnityがすごい2015年版
【 #Unity会 】このUnityがすごい2015年版【 #Unity会 】このUnityがすごい2015年版
【 #Unity会 】このUnityがすごい2015年版
 
Unityを使ったゲームデザイン超入門
Unityを使ったゲームデザイン超入門Unityを使ったゲームデザイン超入門
Unityを使ったゲームデザイン超入門
 
ゲーム制作で学ぶUnityの基礎
ゲーム制作で学ぶUnityの基礎ゲーム制作で学ぶUnityの基礎
ゲーム制作で学ぶUnityの基礎
 

Semelhante a 中高校生対象プログラミング講座Part1

Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Atsushi Tadokoro
 
本当にはじめての Unity
本当にはじめての Unity本当にはじめての Unity
本当にはじめての Unity
Masaki Katoh
 
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーションメディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
Atsushi Tadokoro
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
Atsushi Tadokoro
 
Canvas de shooting 制作のポイント
Canvas de shooting 制作のポイントCanvas de shooting 制作のポイント
Canvas de shooting 制作のポイント
Yohei Munesada
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
Ryota Shiroguchi
 

Semelhante a 中高校生対象プログラミング講座Part1 (20)

HoloLens 2Dでもここまでできる
HoloLens 2DでもここまでできるHoloLens 2Dでもここまでできる
HoloLens 2Dでもここまでできる
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
Unity チュートリアル
Unity チュートリアルUnity チュートリアル
Unity チュートリアル
 
Pythonでゲーム作る
Pythonでゲーム作るPythonでゲーム作る
Pythonでゲーム作る
 
UnityとBlenderハンズオン第3章
 UnityとBlenderハンズオン第3章 UnityとBlenderハンズオン第3章
UnityとBlenderハンズオン第3章
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 
Aiwolfseminar2020
Aiwolfseminar2020Aiwolfseminar2020
Aiwolfseminar2020
 
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
とことんF#よぷよ!  F# + XNA ゲームプログラミング入門とことんF#よぷよ!  F# + XNA ゲームプログラミング入門
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
 
本当にはじめての Unity
本当にはじめての Unity本当にはじめての Unity
本当にはじめての Unity
 
Flashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DFlashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3D
 
HoloLensハンズオン:AirTap & SpatialMapping編
HoloLensハンズオン:AirTap & SpatialMapping編HoloLensハンズオン:AirTap & SpatialMapping編
HoloLensハンズオン:AirTap & SpatialMapping編
 
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーションメディア・アートII  第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
メディア・アートII 第2回 openFrameworks基礎 配列、くりかえし、乱数 ベクトルを使用したアニメーション
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくるデジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
 
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネルももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
ももち浜TECHカフェ:OpenCVとKinectで作ろう壁面タッチパネル
 
Aiwolf seminar 2019_ja
Aiwolf seminar 2019_jaAiwolf seminar 2019_ja
Aiwolf seminar 2019_ja
 
iOS/Androidアプリ「こんな息子に育てた覚えはない」について
iOS/Androidアプリ「こんな息子に育てた覚えはない」についてiOS/Androidアプリ「こんな息子に育てた覚えはない」について
iOS/Androidアプリ「こんな息子に育てた覚えはない」について
 
Canvas de shooting 制作のポイント
Canvas de shooting 制作のポイントCanvas de shooting 制作のポイント
Canvas de shooting 制作のポイント
 
非エンジニア向けUnity勉強会 1
非エンジニア向けUnity勉強会 1非エンジニア向けUnity勉強会 1
非エンジニア向けUnity勉強会 1
 
これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門
 
enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
 

Último

Último (6)

世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
世界を変えるクレーンを生み出そう! 高知エンジニアリングキャンプ2024プログラム
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
2024年度 東京工業大学 工学院 機械系 大学院 修士課程 入試 説明会 資料
 
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
次世代機の製品コンセプトを描く ~未来の機械を創造してみよう~
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 

中高校生対象プログラミング講座Part1