2015年2月3日火曜日

2Dオブジェクトは通常のRayでは反応しない

タイトルどうりで、どうやら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 件のコメント:

コメントを投稿