Beispiel #1
0
    public void SendTouchLeaveMessage(){
        if( heldObject != null){
            heldObject.OnTouchEnd(transform.position);
            heldObject.isHeld = false;
            heldObject = null;

        }
    }
Beispiel #2
0
 void OnTriggerEnter2D(Collider2D col){
     TouchableBehaviour touchedObj = col.gameObject.GetComponent<TouchableBehaviour>();
     if( touchedObj != null){
         heldObject = touchedObj;
     }
 }
    void Touch(Vector2 position)
    {
        var touched = Physics2D.OverlapCircleAll(position, _touchToleranceRadius, LayerMask.GetMask("Birds", "PowerUps", "OtherTouchables"));

        if (touched.Length > 0)
        {
            TouchableBehaviour bird    = null;
            TouchableBehaviour powerup = null;
            TouchableBehaviour other   = null;

            foreach (var item in touched)
            {
                var layerName = LayerMask.LayerToName(item.gameObject.layer);
                switch (layerName)
                {
                case "Birds":
                    if (bird == null || item.transform.position.z < bird.transform.position.z)
                    {
                        var b = item.GetComponent <TouchableBehaviour>();
                        if (b.Enabled)
                        {
                            bird = b;
                        }
                    }
                    break;

                case "PowerUps":
                    if (powerup == null || item.transform.position.z < powerup.transform.position.z)
                    {
                        var b = item.GetComponent <TouchableBehaviour>();
                        if (b.Enabled)
                        {
                            powerup = b;
                        }
                    }
                    break;

                case "OtherTouchables":
                    if (other == null || item.transform.position.z < other.transform.position.z)
                    {
                        var b = item.GetComponent <TouchableBehaviour>();
                        if (b.Enabled)
                        {
                            other = b;
                        }
                    }
                    break;
                }
            }

            if (bird != null)
            {
                bird.OnTouched();
                return;
            }

            if (powerup != null)
            {
                if (other == null || other.gameObject.transform.position.z > powerup.transform.position.z)
                {
                    powerup.OnTouched();
                    return;
                }
            }

            if (other != null)
            {
                other.OnTouched();
            }
        }
    }