//tips
//プレイヤーの動きをフィールド内に制限する
プレイヤーの動きをフィールドの中に制限するために、Mathf.Clampを使用する。
Mathf.ClampはMathf.Clamp(float value, float min, float max)と表され、Mathf.Clamp(検査したい値, 制限したい値の下限, 制限したい値の上限)と記載される。
Transform.transpositionでこれを使用する場合は、Vector3で検査したい次のポジションの変数を作成し、Vector3のx,y,zなどを抜き出して、それが制限範囲ないかどうか判断した上で、制限範囲内であれば現在のポジションに、次のポジションを塗り替えるという手法をとる。
Vector3 nextPosition = transform.position;
nextPosition.x = Mathf.Clamp(nextPosition.x - 1, 0, 10.0f);
transform.position = nextPosition;
書き換えたスクリプトは下記に記載する。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController5 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
Vector3 nextPosition = transform.position;
nextPosition.x = Mathf.Clamp(nextPosition.x - 1, 0, 10.0f);
transform.position = nextPosition;
}
if (Input.GetKeyDown(KeyCode.RightArrow))
{
Vector3 nextPosition = transform.position;
nextPosition.x = Mathf.Clamp(nextPosition.x + 1, 0, 9.0f);
transform.position = nextPosition;
}
if (Input.GetKeyDown(KeyCode.UpArrow))
{
Vector3 nextPosition = transform.position;
nextPosition.z = Mathf.Clamp(nextPosition.z + 1, 0, 9.0f);
transform.position = nextPosition;
}
if (Input.GetKeyDown(KeyCode.DownArrow))
{
Vector3 nextPosition = transform.position;
nextPosition.z = Mathf.Clamp(nextPosition.z - 1, 0, 10.0f);
transform.position = nextPosition;
}
}
public void PushLeftButton()
{
transform.Translate(-1, 0, 0);
}
public void PushRightButton()
{
transform.Translate(1, 0, 0);
}
public void PushUpButton()
{
transform.Translate(0, 0, 1);
}
public void PushDownButton()
{
transform.Translate(0, 0, -1);
}
}
//導入したZBrushCoreminiで制作したオブジェクトのUnityへの移行
無料でハイクオリティの3DCGモデリングが可能なソフトウェア、Sculptrisではなく、同社が提供しているZBrushCoreminiがインストールできたので、そちらを使用して、Unityのオブジェクトを制作して、移行させた。
下記のサイトを参考にして導入作業を行った。
案外操作が難しく、ロボットを作ろうとしたが今回は諦めた。
https://qiita.com/UpAllNight/items/317708069d1ed3ff0486
Unityへのインポート作業はシンプルで、ZBrushCoreminiからエキスポートしたobjファイルをプロジェクトシーンにドラッグし、ドラッグしたモデルのインスペクターから一部修正を行うことで、シーンにモデルを反映させる準備ができる。
修正ポイントとしては、ModelのNormal→Calculateに変更し、ベクトルを生成すること、animationを使用しない場合、Don't Importに変更すること、がある。
また、私が導入した際にオブジェクトの色がきちんと反映されなかったのでUnity側で色のMaterialを作り、アタッチした。
Animationをさせるためにはblenderを導入し、ZBrushCoreminiからblenderへの移行で骨入れをしてからUnityに移す必要がある。
Blenderも導入したいがストレージが限界に達してしまったので外付けHDDの到着を待ってからの導入となる。