code VR

Unity×VR(110)

スポンサーリンク

//tips

//dropitemの認識とUIの設定

モンスター消滅時にアイテムをdropさせ、そのアイテムを特定の場所に収めることを人間側の勝利条件にする。人狼がアイテムを保有し、秘匿した場合、推理と戦闘が行われる。基本的にゴーレムは二人以上で対応することをベースに考え、秘匿できなさそうだが、そこはプレイスキルと騙りでごまかすことはできそう。

試合の冗長化を避けるため試合開始一定時間後に人狼を確認できるような設定を追加する。

ここではdropitemの取得とUIへの反映方法を考える。

まずdropitemアイテムの取得はCubeDTestスクリプトを参考にし、 dropitemアイテムがプレイヤーに触れたら消滅するようにし、一方で

InventoryTest inventorytest = canvas.GetComponentInChildren<InventoryTest>();
inventorytest.Add(item);

を追加しようとしたが、アイテムではなくスキル使用型にするのでインベントリーは必要なさそう。

取得のカウントをして、UIに表示させられる別の形を考えることにする。まずはdropitemにGolemSouldropスクリプトをアタッチ。下記でプレイヤーが触れたら消滅することを確認。OnTriggerEnter(Collider other)だとistriggerのチェックが必要なのでここは、OnCollisionEnterとした。

void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == ("Player"))
{
Destroy(this.gameObject);
}
}

ゴーレム消失時にGolemfollowスクリプトの this.transform.position = golem.transform.position + offset;がエラーになっているので、ここも一緒に修正する。

ゴーレム消失時にflagを切り替えるようにする。Golemfollowスクリプトはシーンの空オブジェクトととして存在し、Golemfollowdropスクリプトはゴーレムそのものにアタッチされている。ゴーレム側からシーンの空オブジェクトを[SerializeField] 参照するのは問題ないはず。

[SerializeField]
Golemfollow golemfollow;

public void Dropgolemitem()
{
golemfollow.dropflag = true;
dropitem.SetActive(true);
}

これでエラーも消え、ゴーレムのドロップアイテムも消失させることができた。ただ、destroyしてしまうと、今度は取得したプレイヤーが消滅した時に再度ドロップアイテムを生成しなければならなくなるので、触ったプレイヤーの頭上に非表示で保持する形を取れないか考えてみる。

Dropitem自体に下記のスクリプトをアタッチすることでプレイヤーに取得された後の追跡処理ができるようになった。

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

public class GolemSouldrop : MonoBehaviour
{
GameObject targetobj;

public bool dropflag=false;

void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == ("Player"))
{
targetobj = collision.gameObject;
this.gameObject.SetActive(false);
//Destroy(this.gameObject);
}
}

void Update()
{
Vector3 offset = new Vector3(0, 3, 0);

if (!dropflag)
{
this.transform.position = targetobj.transform.position + offset;
}

}
public void Dropgolemitem()
{
this.gameObject.SetActive(true);
}
}

ドロップアイテムを拾った数だけカウントを増減させる機能をつけたいので、GolemSoulCounterを実装する。UIに新しいcanvasとimageを作成し、そこの操作プレイヤーの保有アイテム数を反映できるようにする。

GolemSoulCounterオブジェクトの子要素のTextオブジェクトに下記のGolemSoulCounterスクリプトをアタッチ。

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

public class GolemSoulCounter : MonoBehaviour
{
int count=0;
string soultext;

void Update()
{
soultext = count.ToString();
GetComponent<Text>().text = soultext;
}

public void SoulCounterplus()
{
count++;
}
}

GolemSouldropスクリプトと連動させ、コライダーの接触時にカウントが増えるようにしておく。これでドロップアイテム取得時にカウントを増加させることができた。

GolemSoulCounterをタップすることでカウントをマイナスし、ドロップアイテムをドロップし直せるように機能を追加する。

人気の記事

1

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

3

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-code, VR
-,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.