前提・実現したいこと
Unityで弾幕ゲームを作っています。
TouchScriptというAssetを使用してプレイヤーをタッチ(現在はマウス)で操作しているのですが、X軸Y軸が共に0のところでプレイヤーを離すと、再度タッチしても反応がなく動きません。
3Dで作っていますが、プレイヤーは平面の範囲でのみ動きます。
どのような解決方法が考えられますでしょうか。何卒宜しくお願い致します。
試したこと
1.プレイヤーにRigidbodyをつけ、X軸Y軸0のところでとどまらないようにしました。→操作性が悪くなりやめました。
2.重なり合っている背景とプレイヤーのLayerについてProjectSetting→Physicsのところで当たらないようにチェックを外しました。
補足情報(FW/ツールのバージョンなど)
Unity 2018.3.5f1 Personal
Debug.Logなどを仕掛けて、「本当にタッチが取得出来ていない(のでプレイヤーも動かない)」「タッチは取得しているがプレイヤーを動かすスクリプトが動作していない」「プレイヤーを動かすスクリプトは動作しているが、画面上では動いていない(何かのオブジェクトに衝突している等)」のどれなのかをまず調べてみてください。
コメントありがとうございます。
プレイヤーにDebug.Logを仕掛けてみたところ、タッチが出来ていないためにプレイヤーが動かないようです。X軸Y軸共に0の位置にあるのは、Main Camera、背景、EventSystem、Cursorsです。
何卒宜しくお願い致します。
Cursorsが怪しい(タッチ阻害している・「当たらないように」の処理が実は出来ていない)ですが、スクリプト側の問題かもしれません。コード提示してもらえると分かるかもしれないです。
スクリプトは以下の通りです。宜しくお願い致します。
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class PlayerController : MonoBehaviour
{
public int m_hpMax;
public int m_hp;
public GameObject Explosion;
private Vector3 pos;
public GameObject Kira;
GameObject clickedGameObject;
private void Awake()
{
m_hp = m_hpMax;
}
void Update()
{
Clamp();
gameObject.transform.localScale += new Vector3(0.00001f, 0.00001f, 0);
if (Input.GetMouseButtonDown(0))
{
clickedGameObject = null;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit))
{
clickedGameObject = hit.collider.gameObject;
}
Debug.Log(clickedGameObject);
}
}
void Clamp()
{
pos = transform.position;
pos.x = Mathf.Clamp(pos.x, -2.0f, 2.0f);
pos.y = Mathf.Clamp(pos.y, -4.0f, 4.0f);
transform.position = pos;
}
void OnTriggerEnter(Collider collision)
{
if (collision.name.Contains(""))
{
Instantiate(Explosion, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity);
}
if (collision.name.Contains(""))
{
Instantiate(Explosion, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity);
}
if (collision.name.Contains("Item"))
{
Instantiate(Kira, new Vector3(transform.position.x, transform.position.y, transform.position.z), Quaternion.identity);
}
}
void OnCollisionEnter(Collision collision)
{
}
public void Damage(int damage)
{
m_hp -= damage;
if (0 < m_hp) return;
gameObject.SetActive(false);
}
public void Recovery(int recovery)
{
m_hp += recovery;
}
}
あとはTouchScriptのTransformerとTransformGestureというスクリプトがついております。
TouchScriptのコードは書いて良いものか判断に迷ったため、書くのは控えております。
移動はTransformerとTransformGestureに任せているようですね。
「TransformerとTransformGestureだけにする(他の自作スクリプトは外す)」「他のオブジェクトを1つずつ減らしていく(影響の有無をチェック)」を試してみてください。
コメントありがとうございます。
メインカメラが0,0,-10のところにあるのですが、1,1,-10にずらしたところ、1,1,0のところでプレイヤーの動きが止まりました。
メインカメラに問題があるようなのですが、どのように対処すれば良いのかがわかりません。
何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー