命中脚本运行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);
}
}
}
}
光线投射确实不能在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
}
}