如何在Unity游戏引擎(2D)中检测触摸

时间:2014-06-17 18:11:44

标签: unity3d unityscript

我有一颗炸弹,希望它在被触碰时爆炸。我只是尝试使用光线投射来实现它,但有些东西不起作用。我正在使用统一2d设置。

此外,我正在计算机上编程(当然),所以我必须设置一些设置,以便将鼠标点击识别为触摸?

#pragma strict
var explosion:GameObject;


function Update () {
    for (var i = 0; i < Input.touchCount; i++) {
        if (Input.GetTouch(i).phase == TouchPhase.Began) {

            // Construct a ray from the current touch coordinates
            var pos:Vector3 = Camera.main.ScreenToWorldPoint (Input.mousePosition);
            var hitInfo:RaycastHit2D = Physics2D.Raycast(pos, Vector2.zero);
            if (hitInfo != null && hitInfo.collider != null) {
                Debug.Log ("I'm hitting "+hitInfo.collider.name);
                var whatsHit:GameObject = hitInfo.collider.gameObject;

                if(whatsHit.CompareTag("bomb")){
                    whatsHit.GetComponent(BombScript).Explode(whatsHit.transform.position);
                }
            } else {
                Debug.Log("hitting nothing");
            }
        }
    }
}

function Explode(pos:Vector3){
    GameObject.FindGameObjectWithTag("GameController").GetComponent(BombSpawner).spawnBomb = true;
    Instantiate(explosion, pos, Quaternion.identity);
    Destroy (this.gameObject);
}

1 个答案:

答案 0 :(得分:0)

OnMouseDown实际上也会被触摸。当然,它限制了您跟踪手指ID的能力,但如果您不需要它,那么这是完美的,因为它允许您在PC和触摸设备上使用它而无需额外的代码。