拆卸使用光线投射触摸2D对象?

问题描述 投票:1回答:1

我一直试图用光线投射了一天的大部分时间立即删除2D对象。我知道如何使用onmousedown事件的方法effectivelly做同样的事情,我一直都使用它为止。但IVE读,使用raycastign是更有效的,然后使用onmousedown事件的方法,因为onmousedown事件方法鼠标点击而设计的。纵观教程藏汉作为读书论坛我见过使用不同的光线投射技术类和方法在Unity库中可用的人,但这些大多用于3D对象。由于我设计一个2D游戏我想找出如何做到这一点的2D对象。我用尽severl的事情,为了得到它的工作,但nothign似乎工作:

使用Raycasthit2D,Raycast2D和似乎没有任何工作我用尽

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

public class TouchTest : MonoBehaviour
{
        void Start()
        {

        }
        //public Vector2 direction;

        void Update()
        {
            //Cast a ray in the direction specified in the inspector.
            RaycastHit2D hit = 
               Physics2D.Raycast(this.gameObject.transform.position, 
              Input.GetTouch(0).position);

            //If something was hit.
            if (hit.collider != null)
            {
                //Display the point in world space where the ray hit the collider's surface.
                Debug.Log("We Hit something");
            }
        }
}

结果应该是,它输出的控制台上,“我们碰到了什么东西”,当我触摸团结远程对象,但它不会做任何事情,除了说我对Input.GetTouch指数(0).POSITION是出反弹。尽管它说,这是常说的这一点,但对于其他的代码,它仍然能执行我想要什么,但对于这个代码,它不工作,还称该指数走出反弹的事实。

c# unity3d 2d game-engine raycasting
1个回答
1
投票

您收到的错误是因为被调用函数时,鼠标点击不。

您必须在OnMouseDown方法做,或者把它放在if语句,只允许它运行如果鼠标实际点击。

在这方面的一个很好的教程可以发现here

最好的方法(如果你只使用2D)是检查是否鼠标点击是在形状,当它被cliked:

  1. 检查单击鼠标时,并获取其位置。
  2. 获取身体的矩形,比较它的鼠标位置。
  3. 如果人体的矩形包含鼠标位置,鼠标点击了身体。
© www.soinside.com 2019 - 2024. All rights reserved.