示例#1
0
 void UpdateAnimDir()
 {
     if (m_moving.Veloc.magnitude >= (m_moving.MaxSpeed / 2f))
     {
         m_animCtrl.SetAnimDirection(m_moving.Veloc);
     }
 }
示例#2
0
        protected void UpdateMovement(float fAxisX, float fAxisY)
        {
            m_timerBlockDir -= Time.deltaTime;
            m_phyChar.Dir    = new Vector3(fAxisX, fAxisY, 0);

            m_animCtrl.IsPlaying = m_phyChar.IsMoving;
            m_animCtrl.SetAnimDirection(m_phyChar.Dir);
        }
        IEnumerator DoLogic()
        {
            m_physicBhv.Dir     = Vector2.zero;
            m_dirAnim.IsPlaying = false;
            yield return(new WaitForSeconds(Random.Range(MinStepDelay, MaxStepDelay)));

            while (true)
            {
                m_dirAnim.IsPlaying = true;
                m_velocity          = Random.rotation * Vector2.right;
                m_velocity          = m_velocity.normalized * MovingStepDist;
                if (!Target)
                {
                    Target = FindObjectOfType <PlayerController>().gameObject;
                }
                if (Target)
                {
                    Vector2 vDist = FleeFromTarget ? transform.position - Target.transform.position : Target.transform.position - transform.position;
                    if (vDist.magnitude <= SightDistance)
                    {
                        m_velocity = Vector2.Lerp(vDist, m_velocity, Random.value / 8f);
                    }
                }
                for (float dist = 0; dist < MovingStepDist;)
                {
                    yield return(new WaitForFixedUpdate());

                    if (m_physicBhv.CollFlags != 0)
                    {
                        switch (m_physicBhv.CollFlags)
                        {
                        case PhysicCharBehaviour.eCollFlags.DOWN: DoCollision(Vector2.up); break;

                        case PhysicCharBehaviour.eCollFlags.UP: DoCollision(-Vector2.up); break;

                        case PhysicCharBehaviour.eCollFlags.RIGHT: DoCollision(-Vector2.right); break;

                        case PhysicCharBehaviour.eCollFlags.LEFT: DoCollision(Vector2.right); break;
                        }
                    }
                    Debug.DrawRay(transform.position, m_velocity);
                    Vector2 disp = m_velocity.normalized * MovingSpeed;
                    dist += disp.magnitude * Time.deltaTime;
                    m_physicBhv.MaxSpeed = MovingSpeed;
                    m_physicBhv.Dir      = disp;
                    //transform.position += (Vector3)disp;
                    if (Time.frameCount % 4 == 0)
                    {
                        m_dirAnim.SetAnimDirection(disp);
                    }
                }
                m_physicBhv.Dir     = Vector2.zero;
                m_dirAnim.IsPlaying = false;
                yield return(new WaitForSeconds(Random.Range(MinStepDelay, MaxStepDelay)));
            }
        }
示例#4
0
        // Update is called once per frame
        void Update()
        {
            if (m_baseAnimCtrl.AnimDirection == eAnimDir.Right)
            {
                EquipSprite.SetAnimDirection(Vector2.right);

                //qRot.eulerAngles = new Vector3 (0f, 0f, 0f);
            }
            else if (m_baseAnimCtrl.AnimDirection == eAnimDir.Left)
            {
                EquipSprite.SetAnimDirection(Vector2.left);
            }
            else if (m_baseAnimCtrl.AnimDirection == eAnimDir.Down)
            {
                EquipSprite.SetAnimDirection(Vector2.down);
            }
            else                 // UP
            {
                EquipSprite.SetAnimDirection(Vector2.up);
            }
        }
示例#5
0
// Update is called once per frame
        void LateUpdate()
        {
            curr = this.transform.position;

            targetTile = spawnTile;

            //Is the player close enough to trigger AI?
            GameObject[] players = GameObject.FindGameObjectsWithTag("Player");
            int          i       = 0;

            for (i = 0; i < players.Length; i++)
            {
                if ((curr - players [i].transform.position).magnitude <2f && (this.transform.position - players [i].transform.position).magnitude> .30f)
                {
                    targetTile = players [i].transform.position;
                    foundTarg  = true;
                    break;
                }
            }
            if (foundTarg)
            {
                //Find best move to reach goal
                move = findPath();

                //Ajust decision to activate movement system
                if (curr.x + move.x != targetTile.x + .3f ||
                    curr.x + move.x != targetTile.x - .3f ||
                    curr.y + move.y != targetTile.y + .3f ||
                    curr.y + move.y != targetTile.y - .3f)
                {
                    m_animCtrl.SetAnimDirection(new Vector2(move.x, move.y));

                    if (Mathf.Abs(move.y) >= Mathf.Abs(move.x) && move.y > 0)
                    {
                        tmov.ActivateTrigger(TileMovementBehaviour.eTrigger.MoveUp);
                    }
                    else if (Mathf.Abs(move.y) >= Mathf.Abs(move.x) && move.y < 0)
                    {
                        tmov.ActivateTrigger(TileMovementBehaviour.eTrigger.MoveDown);
                    }
                    else if (Mathf.Abs(move.y) <= Mathf.Abs(move.x) && move.x < 0)
                    {
                        tmov.ActivateTrigger(TileMovementBehaviour.eTrigger.MoveLeft);
                    }
                    else if (Mathf.Abs(move.y) <= Mathf.Abs(move.x) && move.x > 0)
                    {
                        tmov.ActivateTrigger(TileMovementBehaviour.eTrigger.MoveRight);
                    }
                }
            }
        }
示例#6
0
        IEnumerator DoLogic()
        {
            m_physicBhv.Dir     = Vector2.zero;
            m_dirAnim.IsPlaying = false;
            yield return(new WaitForSeconds(Random.Range(MinStepDelay, MaxStepDelay)));

            while (true)
            {
                m_dirAnim.IsPlaying = true;
                m_velocity          = Random.rotation * Vector2.right;
                m_velocity          = m_velocity.normalized * MovingStepDist;
                for (float dist = 0; dist < MovingStepDist;)
                {
                    yield return(new WaitForFixedUpdate());

                    if (m_physicBhv.CollFlags != 0)
                    {
                        switch (m_physicBhv.CollFlags)
                        {
                        case PhysicCharBehaviour.eCollFlags.DOWN: DoCollision(Vector2.up); break;

                        case PhysicCharBehaviour.eCollFlags.UP: DoCollision(-Vector2.up); break;

                        case PhysicCharBehaviour.eCollFlags.RIGHT: DoCollision(-Vector2.right); break;

                        case PhysicCharBehaviour.eCollFlags.LEFT: DoCollision(Vector2.right); break;
                        }
                    }
                    Debug.DrawRay(transform.position, m_velocity);
                    Vector2 disp = m_velocity.normalized * MovingSpeed;
                    dist += disp.magnitude * Time.deltaTime;
                    m_physicBhv.MaxSpeed = MovingSpeed;
                    m_physicBhv.Dir      = disp;
                    m_dirAnim.SetAnimDirection(disp);
                }
                m_physicBhv.Dir     = Vector2.zero;
                m_dirAnim.IsPlaying = false;
                yield return(new WaitForSeconds(Random.Range(MinStepDelay, MaxStepDelay)));
            }
        }
 void UpdateAnimDir()
 {
     m_animCtrl.IsPlaying = m_moving.Veloc.magnitude > Vector3.kEpsilon;
     m_animCtrl.SetAnimDirection(m_moving.Veloc);
 }
 void UpdateMovement(float fAxisX, float fAxisY)
 {
     m_phyChar.Dir        = new Vector3(fAxisX, fAxisY, 0);
     m_animCtrl.IsPlaying = m_phyChar.IsMoving;
     m_animCtrl.SetAnimDirection(m_phyChar.Dir);
 }
示例#9
0
        // Update is called once per frame
        void Update()
        {
            weapAnim.AnimDirection = m_animCtrl.AnimDirection;
            if (Attacking == false)
            {
                Quaternion qRot = WeaponSprite.transform.localRotation;

                if (weapAnim.AnimDirection == eAnimDir.Right)
                {
                    WeaponSprite.sprite = WeaponSpriteRight;
                    idolPos             = WeaponSpriteRight;
                    Vector3 vOff = vOffDirRight [(int)m_animCtrl.CurrentFrame % vOffDirRight.Length];
                    WeaponSprite.transform.localPosition = vOff;
                }
                else if (weapAnim.AnimDirection == eAnimDir.Left)
                {
                    WeaponSprite.sprite = WeaponSpriteLeft;
                    Vector3 vOff = vOffDirLeft [(int)m_animCtrl.CurrentFrame % vOffDirLeft.Length];
                    idolPos = WeaponSpriteLeft;
                    WeaponSprite.transform.localPosition = vOff;
                }
                else if (weapAnim.AnimDirection == eAnimDir.Down)
                {
                    WeaponSprite.sprite = WeaponSpriteDown;
                    idolPos             = WeaponSpriteDown;
                    Vector3 vOff = vOffDirDown [(int)m_animCtrl.CurrentFrame % vOffDirDown.Length];

                    WeaponSprite.transform.localPosition = vOff;
                }
                else                     // UP
                {
                    WeaponSprite.sprite = WeaponSpriteUp;
                    idolPos             = WeaponSpriteUp;
                    Vector3 vOff = vOffDirUp [(int)m_animCtrl.CurrentFrame % vOffDirDown.Length];
                    WeaponSprite.transform.localPosition = vOff;
                }
            }

            if (Input.GetKey(KeyCode.Space) && !firstAbilityUsed && Attacking == false)
            {
                weapon = GameObject.FindGameObjectWithTag("Weapon");
                BoxCollider weapCollid;
                Attacking = true;



                if (weapon.GetComponent <BoxCollider> () == null)
                {
                    weapon.AddComponent <BoxCollider> ();
                }
                weapCollid = weapon.GetComponent <BoxCollider> ();
                switch (weapAnim.AnimDirection)
                {
                case eAnimDir.Up:
                    weapAnim.IsPlaying = true;

                    Vector3 temp = WeaponSprite.transform.localPosition;


                    WeaponSprite.transform.localPosition = temp;

                    weapCollid.size = new Vector3(0.32f, 0.32f, 1f);

                    weapCollid.center    = new Vector3(0f, 0.32f, 0f);
                    weapCollid.isTrigger = true;


                    break;

                case eAnimDir.Down:

                    weapAnim.IsPlaying = true;
                    weapCollid.size    = new Vector3(0.32f, 0.32f, 1f);

                    weapCollid.center    = new Vector3(0f, -0.32f, 0f);
                    weapCollid.isTrigger = true;
                    break;

                case eAnimDir.Left:
                    weapAnim.SetAnimDirection(new Vector2(1f, 0f));

                    weapAnim.IsPlaying = true;
                    Vector3 temp2 = WeaponSprite.transform.localPosition;

                    WeaponSprite.transform.localPosition = temp2;

                    weapCollid.size = new Vector3(0.32f, 0.32f, 1f);

                    weapCollid.center    = new Vector3(-0.32f, 0f, 0f);
                    weapCollid.isTrigger = true;

                    break;

                case eAnimDir.Right:
                    weapAnim.SetAnimDirection(new Vector2(-1f, 0f));

                    weapAnim.IsPlaying = true;
                    weapCollid.size    = new Vector3(0.32f, 0.32f, 1f);

                    weapCollid.center    = new Vector3(0.32f, 0f, 0f);
                    weapCollid.isTrigger = true;
                    break;
                }
            }

            else if (Input.GetKey(KeyCode.V) && !(firstAbilityUsed) && Attacking == false)
            {
                firstAbilityUsed = true;
                player           = this.transform.position;

                switch (m_animCtrl.AnimDirection)
                {
                case eAnimDir.Up:
                    player.y += 0.32f;
                    if (obj3 == null)
                    {
                        obj1 = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);
                        obj1.GetComponent <BoxCollider> ().size = new Vector3(0.64f, 0.64f, 1f);
                        obj1.transform.localScale    = new Vector3(0.5f, 0.5f, 1f);
                        obj1.transform.localPosition = new Vector3(obj1.transform.localPosition.x, obj1.transform.localPosition.y, 0.25f);

                        player.y += 0.32f;
                        obj2      = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);
                        obj2.transform.localScale = new Vector3(0.75f, 0.75f, 1f);
                        player.y += 0.32f;
                        obj3      = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);

                        Destroy((GameObject)obj1, 0.1f);
                        Destroy(obj2, 0.3f);
                        Destroy(obj3, 0.5f);
                    }
                    break;

                case eAnimDir.Down:
                    if (obj3 == null)
                    {
                        player.y += -0.32f;

                        obj1 = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);
                        obj1.GetComponent <BoxCollider> ().size = new Vector3(0.64f, 0.64f, 1f);
                        player.y += -0.32f;
                        player.z -= 0.001f;
                        obj2      = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);

                        player.y += -0.32f;
                        player.z -= 0.001f;
                        obj3      = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);
                        obj1.transform.localScale = new Vector3(0.5f, 0.5f, 1f);
                        obj2.transform.localScale = new Vector3(0.75f, 0.75f, 1f);

                        Destroy(obj1, 0.1f);
                        Destroy(obj2, 0.3f);
                        Destroy(obj3, 0.5f);
                    }
                    break;

                case eAnimDir.Left:
                    if (obj3 == null)
                    {
                        player.x += -0.32f;

                        obj1 = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);
                        obj1.transform.localScale = new Vector3(0.5f, 0.5f, 1f);
                        obj1.GetComponent <BoxCollider> ().size = new Vector3(0.64f, 0.64f, 1f);

                        player.x += -0.32f;
                        obj2      = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);
                        obj2.transform.localScale = new Vector3(0.75f, 0.75f, 1f);
                        player.x += -0.32f;
                        obj3      = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);

                        Destroy((GameObject)obj1, 0.1f);
                        Destroy(obj2, 0.3f);
                        Destroy(obj3, 0.5f);
                    }
                    break;

                case eAnimDir.Right:
                    if (obj3 == null)
                    {
                        player.x += 0.32f;
                        obj1      = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);
                        obj1.transform.localScale = new Vector3(0.5f, 0.5f, 1f);
                        obj1.GetComponent <BoxCollider> ().size = new Vector3(0.64f, 0.64f, 1f);

                        player.x += 0.32f;
                        obj2      = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);
                        obj2.transform.localScale = new Vector3(0.75f, 0.75f, 1f);
                        player.x += 0.32f;
                        obj3      = (GameObject)Instantiate(Abilityprefab, player, this.transform.rotation);

                        Destroy((GameObject)obj1, 0.1f);
                        Destroy(obj2, 0.3f);
                        Destroy(obj3, 0.5f);
                        StartCoroutine(wait4());
                    }
                    break;
                }
//				while (firstAbilityUsed == false) {
//					if (obj3 == null) {
//						firstAbilityUsed = true;
//					}
//				}
                firstAbilityUsed = false;
            }
        }
        protected override void Update()
        {
            int tileIdx = RpgMapHelper.GetTileIdxByPosition(transform.position);

            if (tileIdx != m_lastTileIdx || m_lastFogSightLength != FogSightLength)
            {
                RpgMapHelper.RemoveFogOfWarWithFade(transform.position, FogSightLength);
            }

            m_lastFogSightLength = FogSightLength;
            m_lastTileIdx        = tileIdx;


            if (teleporting == true && UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == newScene)
            {
                teleporting = false;
                teleport();
            }
            Vector3 savedDir = m_phyChar.Dir;

            m_phyChar.Dir = savedDir;

            m_tileMovementBehaviour.enabled = (Vehicle == null);

            //DirectionalAnimation[] anims = GetComponentsInChildren<DirectionalAnimation> ();

            if (m_tileMovementBehaviour.enabled)
            {
                if (Input.GetKey(KeyCode.Space) && canMove)
                {
                    attack.enabled = true;
                    attack.SetAnimDirection(currDir);
                    attack.IsPlaying = true;
                    attacking();
                    attack.OnAnimationLoopOver += reset;
                    canMove = false;
                }
                else if (canMove)
                {
                    if (Input.GetKey(KeyCode.RightArrow))
                    {
                        if (Input.GetAxis("Horizontal") < .2)
                        {
                            m_animCtrl.SetAnimDirection(Vector3.right);
                            currDir = Vector3.right;
//						for (int i = 0; i < anims.Length; i++) {
//
//							anims[i].SetAnimDirection(Vector3.right);
//						}
                        }
                        else
                        {
                            m_animCtrl.SetAnimDirection(Vector3.right);
                            currDir = Vector3.right;
                            m_tileMovementBehaviour.ActivateTrigger(TileMovementBehaviour.eTrigger.MoveRight);
                        }
                    }
                    else if (Input.GetKey(KeyCode.LeftArrow))
                    {
                        if (Mathf.Abs(Input.GetAxis("Horizontal")) < .2)
                        {
                            m_animCtrl.SetAnimDirection(Vector3.left);
                            currDir = Vector3.left;

//						for (int i = 0; i < anims.Length; i++) {
//
//							anims[i].SetAnimDirection(Vector3.left);
//						}
                        }
                        else
                        {
                            m_animCtrl.SetAnimDirection(Vector3.left);
                            currDir = Vector3.left;
                            m_tileMovementBehaviour.ActivateTrigger(TileMovementBehaviour.eTrigger.MoveLeft);
                        }
                    }
                    else if (Input.GetKey(KeyCode.UpArrow))
                    {
                        if (Input.GetAxis("Vertical") < .2)
                        {
                            m_animCtrl.SetAnimDirection(Vector3.up);
                            currDir = Vector3.up;
//						for (int i = 0; i < anims.Length; i++) {
//
//							anims[i].SetAnimDirection(Vector3.up);
//						}
                        }
                        else
                        {
                            m_animCtrl.SetAnimDirection(Vector3.up);
                            currDir = Vector3.up;
                            m_tileMovementBehaviour.ActivateTrigger(TileMovementBehaviour.eTrigger.MoveUp);
                        }
                    }
                    else if (Input.GetKey(KeyCode.DownArrow))
                    {
                        if (Mathf.Abs(Input.GetAxis("Vertical")) < .2)
                        {
                            m_animCtrl.SetAnimDirection(Vector3.down);
                            currDir = Vector3.down;

//						for (int i = 0; i < anims.Length; i++) {
//
//							anims[i].SetAnimDirection(Vector3.down);
//						}
                        }
                        else
                        {
                            m_animCtrl.SetAnimDirection(Vector3.down);
                            currDir = Vector3.down;
                            m_tileMovementBehaviour.ActivateTrigger(TileMovementBehaviour.eTrigger.MoveDown);
                        }
                    }
                }
            }
        }
 void UpdateAnimDir()
 {
     m_animCtrl.IsPlaying = m_moving.Veloc.magnitude > 0.01f;
     m_animCtrl.SetAnimDirection(m_moving.Veloc);
 }