アイテムを設置しよう のバックアップソース(No.2)

#contents
*はじめに [#v3a58097]
ステージにアイテム・ギミック・ゴールを設置していきます。
今回は
 ・拾うと移動スピードが変化するりんご
 ・エレベーター
 ・ゴール
の3つを実装します。
#br
*りんごの設置 [#m089a5bb]
まずアイテム用の画像を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