メダルゲームを作ろう(簡易版)

メダルゲームを作ろう

②プッシャーを動かす

続いて、プッシャー部分を動かしていきます。
今回は、Z軸に往復してもらいたいので、そのように書いていきます。
『PusherScript』を用意し、以下のようにスクリプトに追加してください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PusherScript : MonoBehaviour
{
    public float startZ = 2.5f;
    public float endZ = 6f;
    public float speed = 2f;

    private bool movingForward = true;

    void Start()
    {
        transform.position = new Vector3(transform.position.x, transform.position.y, startZ);
    }

    void Update()
    {
        if (movingForward)
        {
            transform.Translate(Vector3.forward * speed * Time.deltaTime);
            if (transform.position.z >= endZ)
            {
                movingForward = false;
            }
        }
        else
        {
            transform.Translate(Vector3.back * speed * Time.deltaTime);
            if (transform.position.z <= startZ)
            {
                movingForward = true;
            }
        }
    }
}

予め変数を用意し、スタート位置と進んでほしい地点までのZ軸を決めておくと修正がしやすくなります。
スピードも変更することが出来ます。
0fに設定すると、プッシャーが止まります。
用途に合わせて子の変数の値を変更することでクオリティーが上がります。

Update()で常時動くように設定しています。スタート地点から目標地点まで座標が移動したらflagが逆になり、スタート地点まで戻っていくようになります。

スクリプトが用意出来たら、Pusherオブジェクトにドラッグ&ドロップし、動作を確認してみてください。

メダルゲーム制作画像4

③スペースボタンを押すとメダルを投入する

プッシャーが動く事を確認できたら、次はメダル投入スクリプトを用意します。
PlayerScriptという名前でスクリプトを作成し、以下のコードをスクリプトに追加します。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerScript : MonoBehaviour
{
    public int playerMedal;
    public GameObject medalPrefab;
    public Transform spawnPoint1;
    public Transform spawnPoint2;
    
    void Start()
    {
        
    }

    void Update()
    {
        // Spaceボタンが押されたら、spawnPoint1、spawnPoint2の位置からメダルPrefabを生成する
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if(playerMedal >= 2){
        playerMedal -=2;
                Instantiate(medalPrefab, spawnPoint1.position, Quaternion.identity);
                Instantiate(medalPrefab, spawnPoint2.position, Quaternion.identity);
            }
        }
    }

}

spawnPointについては先ほどオブジェクト作成の際に、予め決めておいた場所からメダルが生成されるようにするためのオブジェクトです。
どこから生成されるのかを決めておくことで、余計な手間とテストを省くことが出来ます。

プレイヤーの手持ちメダルが2枚以上あるなら、スペースボタンを押すと2枚メダルPrefabが生成されます。
また、2枚メダルを消費するので、手持ちのメダル枚数から2枚引かれるように処理されます。

おっと!
メダルPrefabを作っていませんでしたね…!
Prefabとは、ゲームオブジェクトのテンプレートまたは設計図のようなものです。
Unityでゲームオブジェクトを設計し、それを再利用するためにPrefabとして保存できます。
Prefabを使用することで、同じゲームオブジェクトを簡単に複製し、プロジェクト内で一貫性のある方法でオブジェクトを作成できます。

メダルを自作しても良いのですが、面倒と言う方はこちらのページでDLしてご利用ください。


アタッチ→設定

コードを書き終えたら、オブジェクトにアタッチします。
新しくGameManagerObjectを作成し、そこにPlayerScriptをドラッグ&ドロップします。

PlayerMedal…手持ちメダル枚数を管理します。100と設定してください。
Medal Prefab…Prefabをドラッグ&ドロップしてください。
spawnPoint1…オブジェクト作成の際に制作したInsertMedalObject1をドラッグ&ドロップしてください。
spawnPoint2…spawnPoint1と同じく反対側をドラッグ&ドロップしてください。

各種設定が出来たら、ゲームを実行してください。
スペースボタンを押すとメダルが生成されたら成功です!

※自作でメダルPrefabを作成した方は、コライダー処理とRigidbodyの付け忘れにご注意!

メダルゲーム制作画像5

次がラストになります!
メダルカウントパネル処理を追加していきます。

次へ

ページ: 1 2 3