タイトルどうりで、どうやら2Dオブジェクトは通常のRaycastでは反応しないらしい
例として
まず通常の3DオブジェクトのRay
if (Input.GetMouseButtonDown(0)){
if (sx.gameObject.GetComponent<UserPlayer>().ss != null){
Vector3 pos = Input.mousePosition;
pos.z = 3.0f;
Ray ray = Camera.main.ScreenPointToRay(pos);
if(Physics.Raycast(ray, out hit, 100)){
}}}
こちらが2DオブジェクトのRay
Vector2 pos = new Vector2(x, y);
RaycastHit2D hitObject = Physics2D.Raycast(pos, -Vector2.up);
まぁこうなってると思う
だいぶ2DオブジェクトのRayの方は簡易に書いてます。
このまま使っても意味ないです。
ここで
3Dの空間に2DオブジェクトにRyaでオブジェクトを取得はどうやるんだろうかと
いろいろ調べた結果をここにメモとして残そう!
Vector3 Vector3D = Camera.main.ScreenToWorldPoint( new Vector3(Input.mousePosition.x, Input.mousePosition.y, z));
Vector2 pos = new Vector2(Vector3D.x, Vector3D.y);
Collider2D colition2d = Physics2D.OverlapPoint(pos);
if(colition2d) {
RaycastHit2D 2dObject = Physics2D.Raycast(tapPoint, -Vector2.up);
これで2DオブのRayは完成
とその前に
ついつい忘れてしまうのがオブジェクトにコライダーをつけることです
つけなければRayは反応しませんよ!
0 件のコメント:
コメントを投稿