예제 #1
0
    /// <summary>
    /// Handles the on human iteract.
    /// </summary>
    /// <param name="source">Source.</param>
    /// <param name="e">E.</param>
    void HandleOnHumanIteract(object source, IteractionArgs e)
    {
        if ( e.Iteraction == IteractionArgs.EIteractions.Sweem )
        {
            Vector3 dir = (Vector3) e.Data;

            if ( State != HeroStates.Dead && State != HeroStates.StartPickingUp )
            {
                rigidbody.AddForce( dir * Constants.HeroPushForce * Time.deltaTime );
            }

            if ( (State == HeroStates.Idle || State == HeroStates.MoveForward || State == HeroStates.MoveUp || State == HeroStates.MoveDown ) )
            {
                //Check turns first
                if ( dir.x < -0.2f && mAnimator.transform.localScale.x > 0f )
                {
                    State = HeroStates.Turn;
                    return;
                }
                else if ( dir.x > 0.2f &&  mAnimator.transform.localScale.x < 0f )
                {
                    State = HeroStates.Turn;
                    return;
                }

                //Check moving
                else if ( (dir.x > 0 || dir.x < 0 ) && dir.z < 0.5f && dir.z > -0.5f && rigidbody.velocity.magnitude > 2f )
                {
                    //Move forward
                    State = HeroStates.MoveForward;
                }
                else if ( dir.z < -0.5f && rigidbody.velocity.magnitude > 2f )
                {
                    //Move down
                    State = HeroStates.MoveDown;
                }
                else if ( dir.z > 0.5f )
                {
                    //Move up
                    State = HeroStates.MoveUp;
                }
            }
        }
    }
예제 #2
0
    /// <summary>
    /// Handles the on human iteract.
    /// </summary>
    /// <param name="source">Source.</param>
    /// <param name="e">E.</param>
    void HandleOnHumanIteract(object source, IteractionArgs e)
    {
        if ( e.Iteraction == IteractionArgs.EIteractions.Sweem )
        {
            Ray ray = Camera.main.ScreenPointToRay( (Vector2) e.Data );
            RaycastHit hit;
            if (Physics.Raycast (ray, out hit ))
            {
                if ( hit.collider.rigidbody != null )
                {
                    hit.collider.rigidbody.AddForce( Constants.MenuPushRigidbodyForce * ( 0.5f - Random.value ), 0f , Constants.MenuPushRigidbodyForce * ( 0.5f - Random.value ));
                }

                SceneRoot.Instance.OnUIAction( hit.collider.gameObject, null );
            }
        }
    }
예제 #3
0
 /// <summary>
 /// Iteract the specified iteraction and data.
 /// </summary>
 /// <param name="iteraction">Iteraction.</param>
 /// <param name="data">Data.</param>
 public void Iteract(IteractionArgs.EIteractions iteraction, object data)
 {
     if ( OnIteract != null )
     {
         OnIteract( this, new IteractionArgs(iteraction, data ));
     }
 }