命中脚本运行3d对象,但不运行2d

本文关键字:运行 2d 3d 脚本 对象 | 更新日期: 2023-09-27 18:15:15

这是我的游戏脚本。但它只适用于像立方体这样的3d物体,而不适用于游戏中的2d图像。如何解决这个问题?

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class touchinput : MonoBehaviour {
    void Update () {
        if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Began) 
        {
            Ray ray = Camera.main.ScreenPointToRay( Input.GetTouch(0).position );
            RaycastHit hit;
            if ( Physics.Raycast(Ray, out hit))
            {
                Destroy(hit.collider.gameObject);
            }
        }
    }
}

我试着改变这个,但我得到很多错误,不知道如何修复。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class touchinput : MonoBehaviour {
    void Update () {
        if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Began) 
        {
            Ray2D ray = Camera.main.ScreenPointToRay( Input.GetTouch(0).position );
            RaycastHit2D hit;
            if ( Physics2D.Raycast(Ray2D, out hit))
            {
                Destroy(hit.collider.gameObject);
            }
        }
    }
}

命中脚本运行3d对象,但不运行2d

光线投射确实不能在2D碰撞器上工作。
我前几天发现了这个方法,你可以试试:

if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
{
    Vector3 wp = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
    Vector2 touchPos = new Vector2(wp.x, wp.y);
    if (collider2D == Physics2D.OverlapPoint(touchPos))
    {
        //your code
    }
}