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

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

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

4

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

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-code, VR
-,

Copyright© BUSINESS HACKER , 2021 All Rights Reserved Powered by AFFINGER5.