プレハブ、スクリプト、当たり判定、アセットなど理解したのでゲームらしきものを作ってみる

Unity
Unity WebGL Player | Save Strawberry! - Google Chrome

作るゲームらしきもの「Save Strawberry!

この記事は、ゲーム「Save Strawberry!」の作成手順を解説するページではありません。
管理人としては、ゲームを作る楽しさを知ってほしい為、「Save Strawberry!」で使ったアセット素材BGM素材Unityの知識や操作ゲーム中のスクリプト設定のヒントを紹介するにとどめます。
Let’s try!

使用したアセット(全て無料)

  • Standard Assets (for Unity 2018.4)(プレイヤー)
  • Low Poly Fruit Pickups(イチゴ)
  • Fx Explosion Pack(爆破エフェクト)
  • Skybox Series Free(空と地面のマテリアル)

なお、上記で紹介したStandard Assets(for Unity 2018.4)Fx Explosion Packの2つのアセットはUnity 2019以降だとインポートしただけでエラーが出ます。対処方法は以下をご覧ください。

ゲーム中の音楽

必要なUnityの知識

その他動画資料

ゲームで使用したスクリプト

使っているスクリプトは以下の2つです。

FruitsController

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

public class FruitController : MonoBehaviour
{
    public GameObject Effect;   // 爆破エフェクト用プレハブ
    public AudioClip Se;            // 爆破音源ファイル

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    // 当たり判定
	private void OnCollisionEnter(Collision collision)
	{
        if(collision.gameObject.CompareTag("Cube"))     // Tag「Cube」と接触したら
		{
    		Instantiate(Effect, transform.position, Quaternion.identity);   // 爆破エフェクト
            AudioSource.PlayClipAtPoint(Se, transform.position);            // 爆破音
            Destroy(gameObject);                // イチゴ消去
            Destroy(collision.gameObject);      // Cube消去
		}
	}
}

  • シーンに配置したイチゴにアタッチする
  • イチゴにアタッチ後は、Fruits ControllerのEffectSeExplosion6(アセットFx Explosion Packに収録)と魔王魂 爆発05(魔王魂サイトからダウンロードしたフリー音源)をそれぞれ設定する

CubeController

  • Create Emptyで作った空のオブジェクトをGameMainに名前変更して本スクリプトをアタッチする
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CubeController : MonoBehaviour
{
    public GameObject Prefab;       // Cubeプレハブ

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 60フレーム毎にCubeを生成させる
        if(Time.frameCount % 60 == 0){
            float x = Random.Range(-5.0f, 5.0f);    // 生成範囲(x軸方向)
            Vector3 pos = new Vector3(x, 3.0f, 4.0f);   // 生成位置
            Instantiate(Prefab, pos, Quaternion.identity);  // プレハブを生成
		}
    }
}

GameMainにアタッチ後は、後述のCubeプレハブをCube ControllerのPrefabに設定しておくとランダムでCubeが出現するようになる

作る上でのヒント

シーン視点は、Y軸に対してX軸が右になるように作っています。
Planeを配置したら、まず原点(TransformのPosition項目XYZを0)にすると楽です。

Unity Editor全体イメージ

プレイヤー

  • Standard AssetsのThirdPersonCharacterを使用し、名前をPlayerに変更

イチゴ

  • Rigidbody, Sphere Collider, Fruits Controller(スクリプト)を追加
  • RigidbodyのFreeze Position X, Zにチェック
  • Fruits ControllerのEffect, SeにそれぞれExploson6魔王魂 爆発05を設定
  • 上記3点が完了したら、5個コピーして適当にシーン上に配置

落ちてくるCube

  • 3D ObjectのCubeを使用
  • Rigidbodyを追加
  • タグ名Cubeとして設定しプレハブ化
  • プレハブ化したらシーン上のCubeは消去

床(Plane)

  • 画面奥から手前に向かって下り落ちる様に傾けた(RotationのX軸 サンプルでは-20)
  • 物理マテリアルYuka(後述)を作成し、アタッチする

滑る床(Yuka)

  • Physics Materialをアセットに作成しYukaに名前変更
  • Friction関係を0にして、滑る感じの設定(下図参照)にした
  • 作成後は、シーン上のPlaneにアタッチする

BGM

  • Audio Sourceをシーンに追加しBGMに名前変更
  • BGMのAudio Clip魔王魂 サイバー41を設定、Play On AwakeLoopにチェック

作成後は、ビルドしてみるとよりゲームっぽくなります。

参考

コメント

タイトルとURLをコピーしました