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

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

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.