code ソーシャル

Unityアプリcodetips(29)

スポンサーリンク

//tips

//UIボタンと地形のかぶり

地形とボタンのかぶりをplane distanceやorder in Layerで解決できなかったので、地形をボタンが表示に問題ないように変更。

同時に、どうしても地形とUIの表示が被ってしまう場合の対処法も考えておく。

CanvasのRender Modeを Screen Space-Cameraではなく、Screen Space – Overlay に戻し、画面に直接表示する形に変更する。

Overlayの場合、sceneでは異常な大きさでcanvasが表示されてしまうので、そこはgamesceneを見ながら確認する。

Unityでテキストを表示する方法

【Unity】uGUIをキャラクターの上に表示する手っ取り早い方法【RenderMode別】

ボタン移動に対しても障害物認識をさせたので下記に記載。

きちんとevent triggerでのpointer downでボタン設定を行う。image内のon clickではないことに注意。

間違えてon clickにするとボタンを押してもただカメラが切り替わるだけになる。

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

public class PlayerController7 : MonoBehaviour
{
[SerializeField]//インスペクターにpublicではない変数を表示させる属性

Vector3[] wallPoses = new Vector3[] {
new Vector3(0, 0, 3.0f),
new Vector3(0, 0, 6.0f),
new Vector3(8.0f, 0, 3.0f),
};

 

// Update is called once per frame

void Update()
{
Vector3 nextPosition = transform.position;//同じ処理はまとめたほうがコンパクト

if (Input.GetKeyDown(KeyCode.LeftArrow))
{
nextPosition.x = Mathf.Clamp(nextPosition.x - 1, 0, 10);
}

if (Input.GetKeyDown(KeyCode.RightArrow))
{
nextPosition.x = Mathf.Clamp(nextPosition.x + 1, 0, 10);
}

if (Input.GetKeyDown(KeyCode.UpArrow))
{
nextPosition.z = Mathf.Clamp(nextPosition.z + 1, 0, 10);
}

if (Input.GetKeyDown(KeyCode.DownArrow))
{
nextPosition.z = Mathf.Clamp(nextPosition.z - 1, 0, 10);
}

 

transform.LookAt(nextPosition);
bool hit = false;//障害物があるかどうかのフラグ

foreach (Vector3 v in wallPoses)
{
if (v == nextPosition)
{
hit = true;
break;
}
}

if (!hit)
{
transform.position = nextPosition;
}
}

public void PushLeftButton()
{
Vector3 nextPosition = transform.position;
nextPosition.x = Mathf.Clamp(nextPosition.x - 1, 0, 10.0f);
this.transform.LookAt(nextPosition);
//transform.position = nextPosition;
bool hit = false;//障害物があるかどうかのフラグ

foreach (Vector3 v in wallPoses)
{
if (v == nextPosition)
{
hit = true;
break;
}
}

if (!hit)
{
transform.position = nextPosition;
}
}
public void PushRightButton()
{
Vector3 nextPosition = transform.position;
nextPosition.x = Mathf.Clamp(nextPosition.x + 1, 0, 9.0f);
this.transform.LookAt(nextPosition);
//transform.position = nextPosition;
bool hit = false;//障害物があるかどうかのフラグ

foreach (Vector3 v in wallPoses)
{
if (v == nextPosition)
{
hit = true;
break;
}
}

if (!hit)
{
transform.position = nextPosition;
}

}
public void PushUpButton()
{
Vector3 nextPosition = transform.position;
nextPosition.z = Mathf.Clamp(nextPosition.z + 1, 0, 9.0f);
this.transform.LookAt(nextPosition);
//transform.position = nextPosition;
bool hit = false;//障害物があるかどうかのフラグ

foreach (Vector3 v in wallPoses)
{
if (v == nextPosition)
{
hit = true;
break;
}
}

if (!hit)
{
transform.position = nextPosition;
}
}
public void PushDownButton()
{
Vector3 nextPosition = transform.position;
nextPosition.z = Mathf.Clamp(nextPosition.z - 1, 0, 10.0f);
this.transform.LookAt(nextPosition);
//transform.position = nextPosition;
bool hit = false;//障害物があるかどうかのフラグ

foreach (Vector3 v in wallPoses)
{
if (v == nextPosition)
{
hit = true;
break;
}
}

if (!hit)
{
transform.position = nextPosition;
}
}
}

こちらのスクリプトでボタンの右のみがきちんと認識されないバグが生じたが、それはボタンのrotationのy値が入力されてたからで、z値に180を入力することで解決した。

あとはunityになぜか生成されるcom.unity.postprocessing@2.0.3-previewでのエラーはWindowにあるPackage Managerでupdateすることで修復可能。

I suggest to update the Post Processing instead of deleting it. To update just go to Window > Package Manager and switch the view from In Project to All. Select Postprocessing in the list. Then update it the latest version.

https://forum.unity.com/threads/postprocessmanager-error-with-editorscenemanager.673645/

人気の記事

1

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

2

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

3

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

4

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

5

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

-code, ソーシャル
-,

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