code VR

Unity×VR(93)

スポンサーリンク

//tips

//左右の回転運動

先に作成したプレイヤーのフィールドでのスムーズな動きを実現するスクリプトで、左右の回転角度がイマイチだったので調整を行う。

transform.rightにかける値を100から300に変更した。

//right キーで右に進む
if (Input.GetKey("right"))
{
Vector3 moveForward = transform.position + transform.right * 300;
moveForward.y = 0;
Debug.Log("moveForward" + moveForward);

//Quaternion targetRotation = Quaternion.LookRotation(moveForward - transform.position);
Quaternion targetRotation = Quaternion.LookRotation(moveForward);

transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime);

rb.position = transform.position + transform.right * 10.0f * Time.deltaTime;
Debug.Log(rb.position);
//MoveGo();
}
//left キーで左に進む
if (Input.GetKey("left"))
{
Vector3 moveForward = transform.position - transform.right * 300;
moveForward.y = 0;
Debug.Log("moveForward" + moveForward);

//Quaternion targetRotation = Quaternion.LookRotation(moveForward - transform.position);
Quaternion targetRotation = Quaternion.LookRotation(moveForward);

transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime);

rb.position = transform.position - transform.right * 10.0f * Time.deltaTime;
//MoveGo();
}

//ロビー経由でのphoton同期カウントの適用

先日解決したphoton同期カウント機能をロビー経由で各プレイヤーに付加する方法を考える。

まずはロビーから遷移するsamplescene3にphotoncountのスクリプトとボタンを追加。

無事にカウントが作動し、UIの表示が行われた。

カウント作動ボタンがシーン表示にかぶってしまうので、パネルの上にボタンを表示し、クリック後は非表示に切り替えるようにする。

ヒエラルキーで下にある程の画面表示が前面になることを利用して配置換えを行う。人狼か否かの表示を最下層にし、その表示がでた段階でボタンを乗せたパネルを非表示にする。

人間側のUIも作成し、

public void Humanon()
{
humanon.SetActive(true);
}

をNumberPropスクリプトに追加。

photoncountスクリプトから

if (lobbyPlayerMaxCount != 2)
{
if (id == PhotonNetwork.LocalPlayer.UserId)
{
//numberProp = GameObject.FindWithTag("PlayerNumber").GetComponent<NumberProp>();
numberProp.Humanon();
}
//flag = false;
}

として表示できるようにする。

表示後に自動的に非表示になって欲しいので、AutohideUI スクリプトとAutohideUIsimpleスクリプトを作成し、ボタン配置しているパネルはAutohideUI で非表示化、人狼・人間のUIはAutohideUIsimpleで非表示とした。

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

public class AutohideUI : MonoBehaviour
{
[SerializeField]
GameObject gameobject;

public void Gohide()
{
StartCoroutine("canHide");
}

IEnumerator canHide()
{
yield return new WaitForSeconds(1);
gameobject.SetActive(false);
}
}

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

public class AutohideUIsimple : MonoBehaviour
{
[SerializeField]
GameObject gameobject;

void Start()
{
StartCoroutine("Hide");
}

IEnumerator Hide()
{
yield return new WaitForSeconds(3);
gameobject.SetActive(false);
}
}

WaitForSecondsの秒数調整で人狼・人間のUIの方を後に非表示にさせることができる。

次にボタンのクリックではなく、遷移後のvoid Startのシーン開始タイミングで自動的に値を入手できないか考えてみる。

Photoncountスクリプトを下記のように変更。

/*
public void BeforeCount()
{
photonView.RPC(nameof(LobbyCount), RpcTarget.AllViaServer, PhotonNetwork.LocalPlayer.UserId);
}
*/

private void Start()
{
photonView.RPC(nameof(LobbyCount), RpcTarget.AllViaServer, PhotonNetwork.LocalPlayer.UserId);
}

ボタンUIにアタッチされていたphotonviewコンポーネントおよびphotoncountスクリプトをcanvasにアタッチする。

無事に成功した。こちらの方がシンプルなのでこちらを採用する。

人気の記事

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.