Exemple #1
0
 public void StartDrag( TouchData data )
 {
     UpdatePosition( data );
     this.data = data;
     isBeindHeld = true;
     //gameObject.layer = LayerMask.NameToLayer( layerWhileInteracting );
 }
Exemple #2
0
 public Vector3 LimitForce( float force , TouchData data)
 {
     Vector3 appliedForce = data.worldRunningDelta * force;
     appliedForce.x = Mathf.Clamp( appliedForce.x, maxForce * -1, maxForce );
     appliedForce.y = Mathf.Clamp( appliedForce.y, maxForce * -1, maxForce );
     return appliedForce;
 }
Exemple #3
0
        public void StopDrag( TouchData data )
        {
            //rigidbody.AddForce( data.runningDelta * force, ForceMode.Impulse);

            rigidbody.AddForce( LimitForce( force, data ), ForceMode.Impulse);
            rigidbody.mass = mass;
            this.data = data;
            isBeindHeld = false;
        }
Exemple #4
0
 void Start()
 {
     touchObjects = new List<TouchData>();
     mouseData = null;
 }
Exemple #5
0
 void RemoveTouchData( TouchData data )
 {
     touchObjects.Remove(data);
 }
Exemple #6
0
        void FixedUpdate()
        {
            Vector3 position;
            RaycastHit hit;

            if(Input.touchCount > 0)
            {
                //Debug.Log("----");
                foreach (Touch touch  in Input.touches)
                {
                    position = touch.position;
                    TouchData data;
                    Debug.Log(touch.fingerId);

                    if(touch.phase == TouchPhase.Began)
                    {
                        // create data
                        if( FindCollision( position, out hit) )
                        {
                            data = new TouchData( touch.fingerId, position, hit.collider.gameObject, hit );
                            AddTouchData( data );

                            // send message
                            data.gameObject.SendMessage("StartDrag",data,SendMessageOptions.DontRequireReceiver);
                        }
                    }else if( HasTouchData( touch.fingerId ) )
                    {
                        data = GetTouchData( touch.fingerId );

                        switch( touch.phase )
                        {
                            case TouchPhase.Moved:
                                // update data
                                data.UpdatePosition( position );
                                // send message
                                data.gameObject.SendMessage("UpdateDrag",data,SendMessageOptions.DontRequireReceiver);
                                break;
                            case TouchPhase.Stationary:
                                break;
                            case TouchPhase.Ended:
                                // update data
                                data.UpdatePosition( position );
                                // send message
                                data.gameObject.SendMessage("StopDrag",data,SendMessageOptions.DontRequireReceiver);
                                // remove data
                                RemoveTouchData( data );
                                break;
                            case TouchPhase.Canceled:
                                break;
                        }
                    }
                }
            }

            if(allowMouseEmulation == false)
                return;

            position = Input.mousePosition;

            if(Input.GetMouseButtonDown(0))
            {
                // find available object
                if( FindCollision( position, out hit) )
                {
                    // create data
                    mouseData = new TouchData( 0, position, hit.collider.gameObject, hit );
                    // send message
                    mouseData.gameObject.SendMessage("StartDrag",mouseData,SendMessageOptions.DontRequireReceiver);
                }else{
                    mouseData = null;
                }

            }else if(Input.GetMouseButtonUp(0))
            {
                // find available object
                if(mouseData == null)
                    return;

                // update data
                mouseData.UpdatePosition( position );
                // send message
                if(mouseData.gameObject != null)
                    mouseData.gameObject.SendMessage("StopDrag",mouseData,SendMessageOptions.DontRequireReceiver);
                // remove data
                mouseData = null;

            }else if(Input.GetMouseButton(0))
            {
                // find available object
                if(mouseData == null)
                    return;

                // update data
                mouseData.UpdatePosition( position );
                // send message
                if(mouseData.gameObject != null)
                    mouseData.gameObject.SendMessage("UpdateDrag",mouseData,SendMessageOptions.DontRequireReceiver);
            }
        }
Exemple #7
0
 void AddTouchData( TouchData data )
 {
     if( !HasTouchData(data.index) )
         touchObjects.Add( data );
 }
Exemple #8
0
 void UpdatePosition( TouchData data )
 {
     Vector3 position = data.worldPositionWithOffset;
     position.z = transform.position.z;
     transform.position = position;
 }
Exemple #9
0
 public void UpdateDrag( TouchData data )
 {
     UpdatePosition( data );
     this.data = data;
 }