Пример #1
0
    void Update()
    {
        if (target != null)
        {
            targetDir = target.position - transform.position;
            //shootTimeLeft = Time.time - startTime;
            state = ALLY.ALLYATTACK;

            animator.SetTrigger("Attack");
            moveSpeed = 0.0f;
        }

        /*
         *              //if (enemyPos != null) {
         * enemyPos = GameObject.FindGameObjectWithTag ("Enemy").transform;
         * trMonster = this.gameObject.GetComponent<Transform> ();
         *
         * // 적이 죽지 않으면 스테이트 검사를 진행한다.
         * float _fDist = enemyPos.position.x - trMonster.position.x;
         * // 적이 사정거리에 들어옴
         * if ((_fDist < fAttackDist && _fDist > 0)) {
         *              state = ALLY.ALLYATTACK;
         *              animator.SetTrigger ("Attack");
         *              moveSpeed = 0.0f;
         * } else {
         *              state = ALLY.ALLYRUN;
         *              animator.SetTrigger ("Run");
         *              moveSpeed = realmoveSpeed;
         * }
         * //Debug.Log (_fDist);
         *      //	}*/
    }
Пример #2
0
    void getClosestEnemy()
    {
        GameObject[] taggedEnemys   = GameObject.FindGameObjectsWithTag(targetTag);
        float        closestDistSqr = Mathf.Infinity;

        closestEnemy = null;

        foreach (GameObject taggedEnemy in taggedEnemys)
        {
            objectPos = taggedEnemy.transform.position;
            dist      = (objectPos - transform.position).sqrMagnitude;

            if (dist < fAttackDist)
            {
                closestDistSqr = dist;
                closestEnemy   = taggedEnemy.transform;
            }
            else
            {
                state = ALLY.ALLYRUN;
                animator.SetTrigger("Run");
                moveSpeed = realmoveSpeed;
            }
        }
        target = closestEnemy;
    }
Пример #3
0
 public void Hurt()
 {
     // Reduce the number of hit points by one.
     state = ALLY.ALLYHURT;
     animator.SetTrigger("Hurt");
     HP--;
 }
Пример #4
0
    void Death()
    {
        state = ALLY.ALLYDEATH;
        // Find all of the sprite renderers on this object and it's children.
        SpriteRenderer[] otherRenderers = GetComponentsInChildren <SpriteRenderer>();
        animator.SetTrigger("Death");

        // Disable all of them sprite renderers.
        foreach (SpriteRenderer s in otherRenderers)
        {
            s.enabled = false;
        }

        // Re-enable the main sprite renderer and set it's sprite to the deadEnemy sprite.
        ren.enabled = true;
        ren.sprite  = deadEnemy;

        // Increase the score by 100 points
        score.score += 100;

        // Set dead to true.
        dead = true;

        // Allow the enemy to rotate and spin it by adding a torque.
        rigidbody2D.fixedAngle = false;
        rigidbody2D.AddTorque(Random.Range(deathSpinMin, deathSpinMax));

        // Find all of the colliders on the gameobject and set them all to be triggers.
        Collider2D[] cols = GetComponents <Collider2D>();
        foreach (Collider2D c in cols)
        {
            c.isTrigger = true;
        }

        // Play a random audioclip from the deathClips array.
        int i = Random.Range(0, deathClips.Length);

        AudioSource.PlayClipAtPoint(deathClips[i], transform.position);

        // Create a vector that is just above the enemy.
        Vector3 scorePos;

        scorePos    = transform.position;
        scorePos.y += 1.5f;

        // Instantiate the 100 points prefab at this point.
        Instantiate(hundredPointsUI, scorePos, Quaternion.identity);
    }