- 追加された行はこの色です。
- 削除された行はこの色です。
#contents
*はじめに [#v3a58097]
ステージにアイテム・ギミック・ゴールを設置していきます。
今回は
・拾うと移動スピードが変化するりんご
・エレベーター
・ゴール
の3つを実装します。
#br
*りんごの設置 [#m089a5bb]
まずアイテム用の画像を追加します
#download(hitsuji_dot.png)
#download(hitsuji_run1.png)
まずアイテム用の画像をAssetsに追加します。
#br
#download(apple_red.png)
#download(apple_blue.png)
#br
追加できたらAssets > それぞれの画像を選択し、inspectorからPixels Per Unit を32にそれぞれ変更に変更しておきます。
実装したいリンゴの仕様
・ステージの各所に同じ機能のりんごを複数設置する
・赤いリンゴを拾うと速度が上がる
・青いリンゴを拾うと速度が落ちる
・それぞれの色の速度変化はinspectorから調整できるようにする
#br
「拾う」という動作は、ひつじに当たったときに効果を発動してりんごを削除する
という処理で表現しようと思います。
**プレハブについて [#m7a4dc60]
Unityで同じものを複製して使用するときはプレハブ(Prefab)が便利です。
プレハブはゲームオブジェクトから生成するので、まずはりんごのゲームオブジェクトを完成させます。
#br
**りんごのゲームオブジェクトの準備 [#tc80cf62]
Assets から apple_red.png をSceneにドラッグ・ドロップし、ゲームオブジェクトを作ります。
作ったゲームオブジェクトにコンポーネントを追加します。
必要になりそうなコンポーネントは
・当たり判定用のCollider
です。
りんごの画像がほぼ円に近いので、今回は Circle Collider 2D でよさそうです。
inspector > Add Component から追加します。
#br
追加できたらinspectorからコンポーネントの設定を少し変更します。
まず、りんごにひつじが反発するなどの物理演算は不要なので、isTriggerにチェックを入れて物理演算を無効にします。
次に、Radiusの数値を調整し、当たり判定の大きさをりんごの画像に合わせます。0.4くらいがちょうどよさそうです。
#br
**りんごにスクリプトを追加 [#v952b5b2]
Assets > Add Component > New Script から新しいスクリプトをりんごに追加します。
スクリプト名はAppleとしておきます。
#geshi(csharp,number){{
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Apple : MonoBehaviour
{
private SpriteRenderer spriteRenderer;
private CircleCollider2D circleCollider2D;
public float rate;
void Start(){
spriteRenderer = GetComponent<SpriteRenderer>();
circleCollider2D = GetComponent<CircleCollider2D>();
}
void OnTriggerEnter2D(Collider2D col)
{
if (col.name == "hitsuji_dot") {
spriteRenderer.enabled = false;
circleCollider2D.enabled = false;
StartCoroutine(changeSpeed(col));
}
}
IEnumerator changeSpeed(Collider2D sheep)
{
MoveSheep moveSheep = sheep.GetComponent<MoveSheep>();
moveSheep.speed *= rate;
yield return new WaitForSeconds(3.0f);
moveSheep.speed /= rate;
}
}
}}
#br