void SendCallbacks(string callback, SpriteTouchData data) { foreach (var go in m_targetsCallback) { go.SendMessage(callback, data, SendMessageOptions.DontRequireReceiver); } }
// Update is called once per frame void Update() { //Check press if (m_pressed == false && IsPressed()) { SpriteTouchData touchData = ComputeTouch(); //check attack if (m_collider == touchData.colliderTouched) { m_pressed = true; SendCallbacks(m_onInputDownCallback, touchData); } } //Check Release if (m_pressed && IsReleased()) { m_pressed = false; SpriteTouchData touchData = ComputeTouch(); if (m_collider == touchData.colliderTouched) { SendCallbacks(m_onInputUpCallback, touchData); } } }
SpriteTouchData ComputeTouch() { SpriteTouchData touchData = new SpriteTouchData(); Vector3 worldPoint = Camera.main.ScreenToWorldPoint(CustomGetTouchPosition()); touchData.touchPosition = new Vector2(worldPoint.x, worldPoint.y); touchData.colliderTouched = Physics2D.OverlapPoint(touchData.touchPosition); touchData.sourceComponent = this; return(touchData); }