private void EndFlingGesture(Vector2 gestureEndPosition)
    {
        var heading = gestureEndPosition - (Vector2)CurrentFocus.transform.position;

        var distance  = heading.magnitude;
        var direction = heading / distance;

        if (ShouldFling(distance, GestureTimeElapsed))
        {
            applyForceOnFixedUpdate = true;
            Rigidbody2D rigidbody2D = CurrentFocus.GetComponent <Rigidbody2D>();
            fixedUpdateRigidBody2D  = rigidbody2D;
            rigidbody2D.isKinematic = false;
            fixedUpdateForceToAdd   = heading;
            CurrentFocus.GetComponent <Fling>().FlingTrail.gameObject.SetActive(true);
        }
        else
        {
            SetInitialMovement initialMovement = CurrentFocus.GetComponent <SetInitialMovement>();
            Rigidbody2D        rigidbody2D     = CurrentFocus.GetComponent <Rigidbody2D>();
            rigidbody2D.isKinematic = false;
            rigidbody2D.velocity    = initialMovement.InitialMovement;
        }
        GestureTimeElapsed = 0f;
        InputManager.instance.CurrentFocus = null;
    }
    private void StartFlingGesture(GameObject GestureTarget)
    {
        SetInitialMovement initialMovement = GestureTarget.GetComponent <SetInitialMovement>();
        Rigidbody2D        rigidbody2D     = GestureTarget.GetComponent <Rigidbody2D>();

        rigidbody2D.isKinematic = true;
        rigidbody2D.velocity    = new Vector2(0f, 0f);
        CurrentFocus            = GestureTarget;
    }
예제 #3
0
 // Start is called before the first frame update
 void Awake()
 {
     if (F_Collider2D == null)
     {
         F_Collider2D = this.gameObject.GetComponent <Collider2D>();
     }
     if (F_RigidBody2D == null)
     {
         F_RigidBody2D = this.gameObject.GetComponent <Rigidbody2D>();
     }
     if (InitialMovement == null)
     {
         InitialMovement = this.gameObject.GetComponent <SetInitialMovement>();
     }
 }