Exemplo n.º 1
0
        void ContinuousMove(InGameDirection direction)
        {
            if (direction < 0)
            {
                direction = (InGameDirection )(-1 * (int)direction);
            }
            Vector3 vMovement = IsometricMovement.HorizontalVector(direction);

            target.DirectTranslate(vMovement * Time.deltaTime);
        }
Exemplo n.º 2
0
        void findComponents()
        {
            if (boxCollider == null)
            {
                boxCollider = GetComponent <BoxCollider>();
            }

            //if (_kineticRigidbody == null)
            //    _kineticRigidbody = GetComponent<Rigidbody>();

            if (sprrs == null)
            {
                sprrs = new List <SpriteRenderer>();
            }

            if (sprrs.Count == 0)
            {
                sprrs.AddRange(transform.root.GetComponentsInChildren <SpriteRenderer>());
            }

            if (_character == null)
            {
                _character = transform.root.GetComponentInChildren <IsometricMovement>();
            }

            if (iso == null)
            {
                iso = transform.root.GetComponentInChildren <IsometricSortingOrder>();
            }

            if (boxCollider == null || sprrs.Count == 0) // _rigidbody == null
            {
                enabled = false;
                return;
            }

            if (IsoMap.IsNull || !IsoMap.instance.bUseIsometricSorting)
            {
                Debug.Log("TallCharacterHelper is available in Auto ISO Mode!");
                boxCollider.enabled = enabled = false;
                return;
            }

            boxCollider.enabled   = enabled = true;
            boxCollider.isTrigger = true;

            if (_kineticRigidbody != null)
            {
                _kineticRigidbody.isKinematic = true;
            }
        }
Exemplo n.º 3
0
 public void SetTarget(IsometricMovement newTarget)
 {
     ClearAnchor();
     target  = newTarget;
     NMAgent = target == null ? null : target.GetComponent <IsometricNavMeshAgent>();
 }
Exemplo n.º 4
0
        protected void ExecuteDir(InGameDirection dir)
        {
            bool bMove = dir > 0;

            if (!bMove)
            {
                dir = (InGameDirection)(-1 * (int)dir);
            }

            if (dir.Equals(InGameDirection.Dash) || (!bOnMoving && (isOnGround || bJumpWithMove)))
            {
                if (!bJumpWithMove && dir.Equals(InGameDirection.Jump_Move))
                {
                    jumpStart();
                    dir = LastDirection;
                }

                if (bDashing = dir.Equals(InGameDirection.Dash))
                {
                    dir = LastDirection;
                }
                else
                {
                    LastDirection = dir;
                }

                // float fAngle = IsometricMovement.AngleOfForward(dir);

                if (bRotateToDirection)
                {
                    RotateTo(dir);
                    // cTransform.localEulerAngles = new Vector3(0, fAngle, 0);
                }

                if (bMove)
                {
                    Vector3 v3TmpCoordinates = IsometricMovement.HorizontalVector(dir);
                    if (!bDashing && bSnapToGroundGrid)
                    {
                        Vector3 vUnSnapedPosition = groundGridUnSnapedPosition(cTransform.position);
                        if (vUnSnapedPosition.magnitude > 0.2f &&
                            Vector3.Dot(v3TmpCoordinates.normalized, vUnSnapedPosition.normalized) > 0.866f) //0.866 means angle < 30
                        {
                            v3TmpCoordinates = -vUnSnapedPosition;
                        }
                    }

                    Vector3 v3TmpPosition = cTransform.position + groundGridPos(v3TmpCoordinates, bSnapToGroundGrid);
                    if (!bDashing && bSnapToGroundGrid)
                    {
                        v3TmpPosition += groundGridUnSnapedPosition(v3TmpPosition);
                    }

                    if (bDashing)
                    {
                        v3TmpPosition += vHorizontalMovement;
                    }

                    bMove = Grounding(v3TmpPosition, fMaxDropHeight);
                    if (bMove)
                    {
                        if (!bDashing)
                        {
                            vLastCoordinates = vDestinationCoordinates;
                        }
                        vDestinationCoordinates += v3TmpCoordinates;
                        SetHorizontalMovement(v3TmpPosition - cTransform.position);
                    }
                }
            }
            else
            {
                EnQueueDirection(dir);
            }
        }
        protected void ExecuteDir(InGameDirection dir)
        {
            isMoving = true;
            bool bMove = dir > 0 && alive;

            if (!bMove)
            {
                dir = (InGameDirection)(-1 * (int)dir);
            }

            if (dir.Equals(InGameDirection.Dash) || (!bOnMoving && (isOnGround || bJumpWithMove)))
            {
                if (!bJumpWithMove && dir.Equals(InGameDirection.Jump_Move))
                {
                    jumpStart();
                    dir = LastDirection;
                }

                if (bDashing = dir.Equals(InGameDirection.Dash))
                {
                    dir = LastDirection;
                }
                else
                {
                    LastDirection = dir;
                }

                // float fAngle = IsometricMovement.AngleOfForward(dir);

                if (bRotateToDirection)
                {
                    RotateTo(dir);
                    // cTransform.localEulerAngles = new Vector3(0, fAngle, 0);
                }

                if (bMove)
                {
                    Vector3 v3TmpCoordinates = IsometricMovement.HorizontalVector(dir);
                    if (!bDashing && bSnapToGroundGrid)
                    {
                        Vector3 vUnSnapedPosition = groundGridUnSnapedPosition(cTransform.position);
                        if (vUnSnapedPosition.magnitude > 0.2f &&
                            Vector3.Dot(v3TmpCoordinates.normalized, vUnSnapedPosition.normalized) > 0.866f) //0.866 means angle < 30
                        {
                            v3TmpCoordinates = -vUnSnapedPosition;
                        }
                    }

                    Vector3 v3TmpPosition = cTransform.position + groundGridPos(v3TmpCoordinates, bSnapToGroundGrid);
                    if (!bDashing && bSnapToGroundGrid)
                    {
                        v3TmpPosition += groundGridUnSnapedPosition(v3TmpPosition);
                    }

                    if (bDashing)
                    {
                        v3TmpPosition += vHorizontalMovement;
                    }

                    bMove = Grounding(v3TmpPosition, fMaxDropHeight);
                    if (!bDashing)
                    {
                        vLastCoordinates = vDestinationCoordinates;
                    }
                    vDestinationCoordinates += v3TmpCoordinates;
                    SetHorizontalMovement(v3TmpPosition - cTransform.position);
                    if (!bMove)
                    {
                        if (!GameObject.FindWithTag("Player").GetComponent <KeyInputAssist>().illegalJump)
                        {
                            alive = false;
                            GameObject.FindWithTag("Player").GetComponent <KeyInputAssist>().illegalJump = false;
                        }

                        //Get grid location where Player was standing before they fell to their doom.
                        deathType = deathByFalling;
                        // var deathlocation = GameObject.FindWithTag("Player").GetComponent<KeyInputAssist>().GetCurrAlpacaLocationProperty();
                    }
                }
            }
            else
            {
                EnQueueDirection(dir);
            }
        }