Unity3D
ゲーム
Unity
Unity入門
Unity2018

Unityで塊魂風なゲームを作ってみた


はじめに

Unityを使って衝突したアイテムをくっつける、「塊魂」風のゲームを作ってみました。

初心者なので、改良点等あればコメントお願いします。


参考サイト

【Unity】プログラム知識なしで塊魂を作ろう! / ITTETO

こちらのサイトではくっつくスクリプトをアイテムに入れていますが、今回はPlayerにスクリプトを入れてみました。


環境

Unity 2018.2.11f1


1.ステージ作成

Playerは、標準アセットのRollerBallを使っています。

Standard Assets > Characters > RollerBall

スクリーンショット 2018-12-20 21.42.39.png

標準アセットの入れ方はこちらを参考に

https://qiita.com/tomato_sugar/items/58c1d0a846c0361ac22a

アイテムと床(Plane)を区別して、アイテムだけがくっつくようにしたいので、アイテムに"Item"というタグを設定します。

スクリーンショット 2018-12-20 21.32.04.png

Itemは初期では登録(予約というんでしたっけ?)されていないので"AddTag"で追加してあげましょう。

スクリーンショット 2018-12-20 21.32.14.png

アイテムがRollerBallに埋め込まれたようにくっついて欲しかったので、アイテムのColliderを少し小さくしてます。 (デフォルトは1.0)

またアイテムが衝突時に吹き飛んでおかしくなったので、Is Kinematicもつけておきました。

スクリーンショット 2018-12-20 21.25.24.png


2.スクリプト

RollerBallに下の2つのスクリプトを追加


Item.cs

衝突したアイテムに”Item”というタグが付いていたら、親をRollerBallにするスクリプト

くっついた後も衝突判定があると転がりにくいのでisTriggerを入れてます。


Item.cs

using System.Collections;

using System.Collections.Generic;
using UnityEngine;

public class Item : MonoBehaviour
{
void OnCollisionEnter(Collision col)
{
if (col.gameObject.tag == "Item")
{
col.transform.parent = transform;
col.collider.isTrigger = true;
}
}
}


書きながら「Itemかどうかを区別するより、ステージでない時で判断した方が楽だったかも」と感じました。


FollowPlayer.cs

カメラがRollerBallを追尾するスクリプト

参考にしたサイト様

http://iteto.hatenablog.com/entry/2017/07/09/032955


FollowPlayer.cs

using UnityEngine;

using System.Collections;

public class FollowPlayer : MonoBehaviour
{
public Transform target;
private Vector3 offset;

void Start()
{
offset = GetComponent<Transform>().position - target.position;
}

void Update()
{
GetComponent<Transform>().position = target.position + offset;
}
}



完成形


Ver01

ただ転がってくっつくだけ

See the Pen BlockDamashi_ver01 by Ryo Hidaka (@RyoHidaka) on CodePen.