Esempio n. 1
0
 void FixedUpdate()
 {
     //use layer mask to ignore collisions with anything that isn't its own target
     ConfirmRangedTarget();
     if ((checkLineOfSight() == "left") || (checkLineOfSight() == "right"))
     {
         if (!hit.transform.GetComponent <Unit>().IsDead())
         {
             bool fireToRight = checkLineOfSight() == "right" ? true : false;
             pjCont.FireProjectile(fireToRight);
             animator.SetBool("isInLineOfSight", true);
         }
     }
     else
     {
         animator.SetBool("isInLineOfSight", false);
     }
 }
Esempio n. 2
0
    public void ChaseAndMeleeTarget()
    {
        if (target)
        {
            var targetIsToTheLeft = transform.position.x > target.position.x;

            if (Vector3.Distance(transform.position, target.position) <= stoppingDistance)
            {
                if (!target.GetComponent <Unit>().IsDead() || target)
                {
                    pjCont.FireProjectile(isFiringRight: !targetIsToTheLeft);
                    animator.SetBool("isMelee", true);
                }
            }
            else if (Vector3.Distance(transform.position, target.position) > stoppingDistance)
            {
                transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
                animator.SetBool("isMelee", false);
            }

            animator.SetBool("isToLeftOfTarget", targetIsToTheLeft);
            animator.SetBool("isXFlipped", targetIsToTheLeft);
        }
    }
Esempio n. 3
0
    private void Update()
    {
        CheckZStopped();
        if (Input.GetKeyDown(inputController.Resurrect))
        {
            res.Resurrect();
        }
        if (Input.GetKeyDown(inputController.Heal))
        {
            res.AbsorbHealth();
        }
        if (Input.GetKeyDown(inputController.SwapWeapon))
        {
            gameObject.GetComponent <WeaponController>().SwapWeapon();
        }
        if (Input.GetKeyDown(inputController.Interact))
        {
            if (atDoor)
            {
                GameObject.FindGameObjectWithTag("FadeWall").GetComponent <SceneChanger>().ChooseLevelAndFade();
                GameObject[] exits = GameObject.FindGameObjectsWithTag("Exit");
                foreach (GameObject exit in exits)
                {
                    exit.SetActive(false);
                }
                GameObject.Find("Environment").GetComponent <AudioSource>().PlayOneShot(FindObjectOfType <LevelScript>().GetOpenDoor());
            }
            if (atLoot)
            {
                foreach (GameObject go in GameObject.FindGameObjectsWithTag("Loot"))
                {
                    Destroy(go);
                }
                FindObjectOfType <LootManager>().ChooseLootAndDisplay();
            }
        }
        if (weaponAnim)
        {
            //not loaded, yet reloading, and key pressed
            if (!pc.GetIsLoaded() && (Input.GetKey(inputController.ShootLeft) || Input.GetKey(inputController.ShootRight)) && !pc.GetIsReloading())
            {
                SetShootingBools("Right", false);
                SetShootingBools("Left", false);
                pc.SetIsReloading(true);
                if (Input.GetKey(inputController.ShootRight))
                {
                    torsoAnim.SetBool("isShootingRight", true);
                    weaponAnim.SetBool("isReloadingRight", true);
                }
                else if (Input.GetKey(inputController.ShootLeft))
                {
                    torsoAnim.SetBool("isShootingLeft", true);
                    weaponAnim.SetBool("isReloadingRight", true);
                }
                StartCoroutine(pc.Reload());
            }
            if (pc.GetIsLoaded() && weaponScript.GetNeedsReload())
            {
                weaponAnim.SetBool("isReloadingRight", false);
                weaponAnim.SetBool("isReloadingLeft", false);
            }
            //loaded and not reloading (ready)
            if (pc.GetIsLoaded() && !pc.GetIsReloading())
            {
                torsoAnim.SetBool("isShootingRight", false);
                torsoAnim.SetBool("isShootingLeft", false);

                if (Input.GetKey(inputController.ShootLeft))
                {
                    float origProjXOffset = pc.GetPosOffsetX();
                    float origProjYOffset = pc.GetPosOffsetY();
                    pc.SetPosOffsetX(weaponScript.GetLeftProjXOffset());
                    pc.SetPosOffsetY(weaponScript.GetLeftProjYOffset());
                    pc.FireProjectile(isFiringRight: false);
                    SetShootingBools("Left", true);
                    pc.SetPosOffsetX(origProjXOffset);
                    pc.SetPosOffsetY(origProjYOffset);
                }
                if (Input.GetKey(inputController.ShootRight))
                {
                    pc.FireProjectile(isFiringRight: true);
                    SetShootingBools("Right", true);
                }
            }
            else
            {
                SetShootingBools("Left", false);
                SetShootingBools("Right", false);
            }
            if (!weaponScript.GetNeedsReload() && !(Input.GetKey(inputController.ShootLeft) || Input.GetKey(inputController.ShootRight)))
            {
                SetShootingBools("Left", false);
                SetShootingBools("Right", false);
            }
        }
    }