質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

1885閲覧

unity Pheisics.raycastでlayerMaskを設定したのですが上手くいきません

yorukoko

総合スコア0

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/11/19 02:31

初めまして、先日からunityを始めた現在大学二年生のものです。

重なりのある2つのオブジェクトに対して、RaycastでlayerMaskを指定することで、一方のオブジェクトのみ検出しようとしています。以下のように設定したのですが、うまくいきません。問題点をご教授いただきたいです。

RaycastHit2D origin = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, layerMask);

2つのオブジェクトのうち、一方のオブジェクトのlayerはinspectorでデフォルトの0になっており、もう一方のlayerをinspectorで1に変更しました。

変数であるlayerMaskは次のように設定しました。

public class DragAndDrop : MonoBehaviour
{
LayerMask layerMask;

public GameObject SelectedPiece; // Start is called before the first frame update void Start() { layerMask = 1; }

全体のコードがこちらです。

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

public class DragAndDrop : MonoBehaviour
{
LayerMask layerMask;

public GameObject SelectedPiece; // Start is called before the first frame update void Start() { layerMask = 1; } // Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) { RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero); if (hit.transform.CompareTag("Puzzle")) { SelectedPiece = hit.transform.gameObject; } } if (Input.GetMouseButtonUp(0)) { RaycastHit2D origin = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, layerMask); if (origin.transform.CompareTag("Origin")) { Debug.Log("当たってる"); SelectedPiece.transform.position = origin.transform.position; } SelectedPiece = null; } if (SelectedPiece != null) { Vector3 MousePoint = Camera.main.ScreenToWorldPoint(Input.mousePosition); SelectedPiece.transform.position = new Vector3(MousePoint.x, MousePoint.y, 0); } }

}

分かる方いれば、ぜひよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

まず、「うまくいきません」というのは具体的にどううまくいかないのかも書いてください。

問題点については、layerMaskの指定があやしいです。

こちらなどを参考にシフト演算子を使用して、指定してみてください。
https://www.ame-name.com/archives/5621

投稿2021/11/20 09:49

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問