private void Start()
    {
        bulletEffectManager = GameObject.Find("MANAGER").transform.Find("BulletEffectManager").GetComponent <BulletEffectManager>();
        enemyStatus         = GetComponent <EnemyStatus>();
        enemyMove           = GetComponent <EnemyMove>();
        player     = GameObject.Find("CHARACTER").transform.Find("Player").gameObject;
        bulletPool = new Transform[3];
        for (int i = 0; i < 3; i++)
        {
            bulletPool[i] = GameObject.Find("BULLET").transform.Find("EnemyBullet").GetChild(i);
        }
        bulletParent = new Transform[10];
        for (int i = 0; i < 10; i++)
        {
            bulletParent[i] = GameObject.Find("BULLET").transform.Find("EnemyBullet_Temp").transform.Find(string.Format("EnemyBullet_Temp{0}", i + 1));
        }
        effectPool   = GameObject.Find("EFFECT").transform.Find("Effect");
        effectParent = GameObject.Find("EFFECT").transform.Find("Effect_Temp");

        switch (enemyStatus.GetEnemyType())
        {
        case EnemyType.ENEMYTYPE_SMINION:
        case EnemyType.ENEMYTYPE_MMINION:
        case EnemyType.ENEMYTYPE_LMINION:
            StartCoroutine(EnemyMinionAttack(enemyPatternNumber, enemyAttackWaitTime, enemyAttackDelayTime, isPatternRepeat, enemyFireCount, enemyAttackRepeatTime, enemyCustomPatternNumber));
            break;

        default:
            break;
        }
    }
Beispiel #2
0
        public static EnemyStatus AllBut(Direction direction)
        {
            EnemyStatus enemyStatus = TotalEnemy();

            switch (direction)
            {
            case Direction.Down:
                enemyStatus.IsBottom = false;
                break;

            case Direction.Up:
                enemyStatus.IsTop = false;
                break;

            case Direction.Right:
                enemyStatus.IsRight = false;
                break;

            case Direction.Left:
                enemyStatus.IsLeft = false;
                break;
            }

            return(enemyStatus);
        }
Beispiel #3
0
    void SetStats(int phase, int level, int maxPhase)
    {
        EnemyStatus enemyStatus = GetComponent <EnemyStatus>();

        if (maxPhase > 0)
        {
            enemyStatus.SetMaxPhase(maxPhase);
        }
        else
        {
            if (level < 30)
            {
                enemyStatus.SetMaxPhase(1);
                maxPhase = 1;
            }
            else if (level < 60)
            {
                enemyStatus.SetMaxPhase(2);
                maxPhase = 2;
            }
            else
            {
                enemyStatus.SetMaxPhase(3);
                maxPhase = 3;
            }
        }
        enemyStatus.maxHealth = GetPhaseMaxHP(phase, level, maxPhase);
    }
    private State state = State.FORWARD; // 敵機の行動状況.

    void Start()
    {
        // プレイヤーのインスタンスを取得.
        player = GameObject.FindGameObjectWithTag("Player");

        // 敵機の状況のインスタンスを取得.
        enemyStatus = this.GetComponent <EnemyStatus>();

        // --------------------------------------------------------------------
        // 出現位置を指定.
        // --------------------------------------------------------------------

        // 発生方向を計算.(プレイヤーの進行方向と反対側).
        float playerAngleY    = player.transform.rotation.eulerAngles.y + 180;
        float additionalAngle = (float)Random.Range(-90, 90);

        // 方向を設定.
        transform.rotation = Quaternion.Euler(0f, playerAngleY + additionalAngle, 0f);

        // 位置を設定.
        transform.position = new Vector3(0, 0, 0);
        transform.position = transform.forward * distanceFromPlayerAtStart;

        // 進行方向をプレイヤーに向ける.
        Vector3    playerPosition   = player.transform.position;
        Vector3    relativePosition = playerPosition - transform.position;
        Quaternion targetRotation   = Quaternion.LookRotation(relativePosition);

        transform.rotation = targetRotation;

        // 敵機を動かす.
        enemyStatus.SetIsAttack(true);
    }
Beispiel #5
0
 void Start()
 {
     status   = GetComponent <EnemyStatus>();
     animator = GetComponent <Animator>();
     hitDetecter.gameObject.SetActive(false);
     hitDetecter.enabled = false;
 }
Beispiel #6
0
        public void init(WorldMap w, Hex h, int health)
        {
            this.w         = w;
            this.h         = h;
            this.health    = health;
            this.maxHealth = health;
            this.timer     = 0f;

            invincible = new TemporaryEffect();
            stunned    = new TemporaryEffect();
            mousedOver = false;

            bar = gameObject.AddComponent <EnemyHealthBar>();
            bar.transform.parent = transform;
            bar.init(this);

            status = gameObject.AddComponent <EnemyStatus>();
            status.transform.parent = transform;
            status.init(this);

            var obj = new GameObject("Unit Model");

            obj.transform.parent = transform;
            model = obj.AddComponent <UnitModel>();

            model.init(this);
        }
Beispiel #7
0
    public float DebuffCD;           // max time before debuffs wear off

    // Use this for initialization
    void Start()
    {
        _controller        = GetComponent <CharacterController2D>(); // instance of Charactercontroller2D
        _direction         = new Vector2(-1, 0);                     // this GameObject will move the left upon initialization
        CurrentHealth      = MaxHealth;                              // sets current health to maximum health
        Player             = FindObjectOfType <Player>();            // finds instances of the player
        SpriteColor.color  = Color.white;                            // sets the color to white by default
        CanFireProjectiles = true;                                   // by default allows AI to shoot projectiles
        StoredSpeed        = MovementSpeed;                          // stores original movement speed
        MaxSpeedStore      = MovementSpeed;                          // stores the Enemy's starting MaxSpeed
        Status             = EnemyStatus.Normal;                     // Player will start with Normal Status
        SpriteColor.color  = Color.white;                            // sets the color to white by default
        DebuffCD           = 2f;

        if (ChangeSize == true)
        {
            transform.localScale = new Vector2(0.75f, 0.75f);       // fixes resizing issue with touch screen overlay
        }
        if (Enemy == EnemyType.Spawner)
        {
            // calls the Spawn function after a delay of the SpawnTime and then continue to call after the same amount of time.
            InvokeRepeating("Spawn", SpawnTime, SpawnTime);
        }

        // Stores the Undead EnemyAI's original sprite
        if (Enemy == EnemyType.Undead)
        {
            UndeadStoredSprite = SpriteColor.sprite;
        }
    }
Beispiel #8
0
 // Event invocations.
 private void OnDied(EnemyStatus obj, int xp)
 {
     if (Died != null)
     {
         Died(obj, xp);
     }
 }
    void SetInitialStats(int phase, int level, int maxPhase)
    {
        EnemyStatus       enemyStatus       = GetComponent <EnemyStatus>();
        VampireController vampireController = GetComponent <VampireController>();

        if (maxPhase > 0)
        {
            enemyStatus.SetMaxPhase(maxPhase);
        }
        else
        {
            if (level < 30)
            {
                enemyStatus.SetMaxPhase(1);
                maxPhase = 1;
            }
            else if (level < 60)
            {
                enemyStatus.SetMaxPhase(2);
                maxPhase = 2;
            }
            else
            {
                enemyStatus.SetMaxPhase(3);
                maxPhase = 3;
            }
        }
        enemyStatus.maxHealth = GetPhaseMaxHP(phase, level, maxPhase);
        GameObject player = GameObject.FindGameObjectWithTag("Player");

        vampireController.SetPlayerTransform(player.transform);
    }
Beispiel #10
0
    IEnumerator HurtRoutine()
    {
        status = EnemyStatus.Hurt;
        float timer = 0;
        bool  blink = false;

        while (timer < hurtTimer)
        {
            blink  = !blink;
            timer += Time.deltaTime;
            if (blink)
            {
                foreach (SpriteRenderer rend in sr)
                {
                    rend.color = Color.white;
                }
            }
            else
            {
                foreach (SpriteRenderer rend in sr)
                {
                    rend.color = Color.red;
                }
            }
            yield return(new WaitForSeconds(0.05f));
        }
        foreach (SpriteRenderer rend in sr)
        {
            rend.color = Color.white;
        }
        status = EnemyStatus.Active;
    }
Beispiel #11
0
    void Start()
    {
        statuses    = GetComponent <EnemyStatus>();
        attackstate = false;
        agent       = GetComponent <NavMeshAgent>();
        animator    = GetComponent <Animator>();
        GameObject[] windows   = GameObject.FindGameObjectsWithTag("Window"); //finds all gameobjects with the tag window attached to them and lists them as boards
        GameObject[] doors     = GameObject.FindGameObjectsWithTag("Door");   //finds all gameobjects with the tag window attached to them and lists them as boards
        GameObject[] entrances = new GameObject[windows.Length + doors.Length];
        for (int i = 0; i < windows.Length; i++)
        {
            entrances[i] = windows[i];
        }                                                                   //
        for (int i = 0; i < doors.Length; i++)                              //creates an array out of the windows and doors
        {                                                                   //
            entrances[windows.Length + i] = doors[i];
        }


        Transform closest_entrance = entrances[0].transform;                                                     //the first entrance on the list is then made the closest entrance to compare all the other boards to

        float closest_entrance_distance = Vector3.Distance(entrances[0].transform.position, transform.position); //evaluates the distance of the closest entrance

        foreach (GameObject entrance in entrances)                                                               //loops through all the other possibilities
        {
            if (Vector3.Distance(entrance.transform.position, transform.position) < closest_entrance_distance)   //compares the other entrances distances with the closest entrance distance
            {
                closest_entrance          = entrance.transform;
                closest_entrance_distance = Vector3.Distance(entrance.transform.position, transform.position);
            }
        }
        target = closest_entrance; //claims the closest entrance as the target
    }
Beispiel #12
0
 void Start()
 {
     player = GameObject.Find(playerName);
     es     = GetComponent <EnemyStatus>();
     rb     = GetComponent <Rigidbody2D>();
     anim   = GetComponentInChildren <Animator>();
 }
    void Start()
    {
        enemyAttackLoopTime  = 5.33f;
        attackWaveSpeed_temp = 5.33f;
        m_enemyData          = m_battleManager.GetEnemyData();
        maxHP_f = m_enemyData.maxHp;

        //attackDemage_f = m_enemyData.attack_demage;
        attackDemage_f = 1; //모든 적 데미지 1로 통일.

        //sunbi data 가져오기
        m_sunbi.SetEnemyDamage(attackDemage_f);
        m_sunbi.AccessEnemyObject();
        sunbiAttackDamage = (int)m_sunbi.GetSunbiDamage();

        //StartCoroutine("AttackWave");
        //currentHp = (int)maxHP_f;
        //maxHP = (int)maxHP_f;
        currentHp_f = maxHP_f;

        //transform.position = new Vector3(507.392f,405.248f,- 9000f);

        hpBarUpdate();
        //m_battleManager.SetStatePlaying();
    }
Beispiel #14
0
    void OnTriggerEnter(Collider other)
    {
        float DamageHP;

        if (other.gameObject.tag == "Enemy" && Owner == OwnerType.Player)
        {
            EnemyStatus estat = other.gameObject.GetComponent <EnemyStatus>();
            DamageHP = (CalculateDamage() - estat.Def);
            if (DamageHP <= 1)
            {
                DamageHP = 1;
            }
            estat.CurrentHp -= DamageHP;
            DrawText(DamageHP, other.transform.position);
        }

        if (other.gameObject.tag == "Player" && Owner == OwnerType.Enemy)
        {
            PlayerStatus pstat = other.gameObject.GetComponent <PlayerStatus>();
            DamageHP = (CalculateDamage() - (pstat.Def + pstat.item_Def));
            if (DamageHP <= 1)
            {
                DamageHP = 1;
            }
            pstat.CurrentHp -= DamageHP;
            DrawText(DamageHP, other.transform.position);
        }


        if (other.gameObject.tag == "Map" && this.tag == "ATKSkill")
        {
            Speed *= -0.8f;
            Destroy(gameObject, 0.5f);
        }
    }
Beispiel #15
0
    /// <summary>
    /// 方法:接收增益状态信息并改变怪物状态
    /// </summary>
    /// <param name="sds">增益状态</param>
    public void PacDotsMessageReceive(SuperDotStyle sds)
    {
        switch (sds)
        {
        case SuperDotStyle.ordinary:
            isChase            = true;
            isEat              = true;
            enemyStatus        = EnemyStatus.Patrol;
            spriteRender.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);
            break;

        case SuperDotStyle.Still:
            enemyStatus        = EnemyStatus.Still;
            isChase            = false;
            isEat              = true;
            spriteRender.color = new Color(1.0f, 1.0f, 1.0f, 1.0f);
            break;

        case SuperDotStyle.Strengthen:
            enemyStatus        = EnemyStatus.Flee;
            isChase            = false;
            isEat              = false;
            spriteRender.color = new Color(1.0f, 1.0f, 1.0f, 0.5f);
            break;

        case SuperDotStyle.Invincible:
            enemyStatus        = EnemyStatus.Patrol;
            isChase            = false;
            isEat              = false;
            spriteRender.color = new Color(1.0f, 1.0f, 1.0f, 0.5f);
            break;
        }
        //LastEnemyStatus = enemyStatus;
    }
 public void OnHurt()
 {
     SetSpeedX(0);
     es = EnemyStatus.Hurt;
     animator.SetTrigger("hurtTrigger");
     PlaySoundEffect("SoundEffects/monsterSounds/wolf2die");
 }
Beispiel #17
0
    // Start is called before the first frame update
    void Start()
    {
        Timer = 0.0f;

        FindRange   = 15.0f;
        SightAngle  = 120.0f;
        ChaseRange  = 30.0f;
        AttackRange = 2.0f;

        status = GetComponent <EnemyStatus>();

        status.MaxHP      = 500;
        status.Damage     = 35;
        status.MoveSpeed  = 12.0f;
        status.AttackRate = 2.7f;

        player = GameObject.Find("Player").transform;

        Weapon         = weaponCollider;
        Weapon.enabled = false;

        StartPoint = transform;

        Agent       = GetComponent <NavMeshAgent>();
        Agent.speed = status.MoveSpeed;

        Animator = GetComponent <Animator>();
        Animator.SetTrigger("Idle");

        state = EnemyState.Idle;
    }
Beispiel #18
0
 protected override void EnterBackState()
 {
     aniControlBoss.IsLocomotion = true;
     aniControlBoss.SpeedPercent = MoveControl.Magnitude / 2;
     EnemyStatus.ResetLife();
     EnemyStatus.lifeBar.SetActive(false);
 }
    void SetStats(int phase, int level, int maxPhase)
    {
        EnemyStatus enemyStatus = GetComponent <EnemyStatus>();
        KnifeDummy  knifeDummy  = GetComponent <KnifeDummy>();

        if (maxPhase > 0)
        {
            enemyStatus.SetMaxPhase(maxPhase);
        }
        else
        {
            if (level > 0 && level < 80)
            {
                enemyStatus.SetMaxPhase(1);
                maxPhase = 1;
            }
            else if (level == 0 || level < 90)
            {
                enemyStatus.SetMaxPhase(2);
                maxPhase = 2;
            }
            else
            {
                enemyStatus.SetMaxPhase(3);
                maxPhase = 3;
            }
            this.maxPhase = maxPhase;
        }
        GameObject player = GameObject.FindGameObjectWithTag("Player");

        knifeDummy.SetPlayerTransform(player.transform);
        enemyStatus.maxHealth = GetPhaseMaxHP(phase, level, maxPhase);
    }
    };                                           //Listの横列の番号-2を指定
                                                 // Use this for initialization

    void Awake()
    {
        status     = gameObject.GetComponent <EnemyStatus>();
        gameMaster = FindObjectOfType <GameMasterScript>();
        aReader    = FindObjectOfType <AbilityReader>();
        Lv         = gameMaster.GetEnemyLV();
    }
 public void ActivateEnemy()
 {
     //mySpriteRenderer.enabled = true;
     this.enabled = true;
     this.gameObject.SetActive(true);
     myStatus = EnemyStatus.Alive;
 }
Beispiel #22
0
    // give status according to the trap type
    public void addStatusFromTraps(TrapType type, float damage = 0f)
    {
        switch (type)
        {
        case TrapType.BOMB_TRAP:
            addDamage(damage, TowerType.SNIPER);     // the bomb has the same hit attribute as the sniper
            break;

        case TrapType.FREEZE_TRAP:
            status           = EnemyStatus.FROZEN;
            conditionChanged = true;
            break;

        case TrapType.TIME_TRAP:
            if (status != EnemyStatus.FROZEN)
            {
                status           = EnemyStatus.STOPPED;
                conditionChanged = true;
            }
            break;

        default:
            break;
        }
    }
 public override void Initialize(GameObject usingObj)
 {
     eneTree = usingObj.GetComponent <BaseEnemyTree>();
     status  = usingObj.GetComponent <EnemyStatus>();
     anim    = usingObj.GetComponent <Animator>();
     timer   = 0;
 }
 public void DestroySelf(string message)
 {
     //Debug.Log("DESTROYING SELF");
     this.myStatus = EnemyStatus.Dead;
     this.enabled  = false;
     this.gameObject.SetActive(false);
 }
Beispiel #25
0
 void Start()
 {
     bloodPooler = ObjectPooler.sharedPooler;
     curMeth     = "attack";
     timer       = -1f;
     attacked    = true;
     right       = true;
     //GAS = 2;
     GADone           = false;
     grabbed          = false;
     run              = false;
     animator         = GetComponent <Animator>();
     bloodBulletIndex = bloodPooler.GetIndex(bloodBulletPrefab);
     batBulletIndex   = bloodPooler.GetIndex(batBulletPrefab);
     status           = GetComponent <EnemyStatus>();
     canTurn          = true;
     if (bloodBulletIndex == -1)
     {
         Debug.LogError("BloodBullet not found in object pooler");
         bloodBulletIndex = 0;
     }
     if (moveLoc == null || moveLoc.Count != 4)
     {
         moveLoc = new List <Vector3>();
         moveLoc.Add(new Vector3(-5.2f, -3.2f));
         moveLoc.Add(new Vector3(5, -3));
         moveLoc.Add(new Vector3(3.3f, 3.3f));
         moveLoc.Add(new Vector3(-3, 3));
     }
 }
 public override void Initialize(GameObject usingObj)
 {
     eneTree = usingObj.GetComponent <BaseEnemyTree>();
     status  = usingObj.GetComponent <EnemyStatus>();
     cMinInsideCircle.Set(1, 1);
     anim = GetComponent <Animator>();
 }
Beispiel #27
0
    public void setAnimation(EnemyStatus animation)
    {
        switch (animation)
        {
        case EnemyStatus.enemy_Idle:
            scrabAnimator.SetBool("Run", false);
            scrabAnimator.SetBool("Attack", false);
            break;

        case EnemyStatus.enemy_Attack:
            if (!attackSound.isPlaying)
            {
                attackSound.Play();
            }
            scrabAnimator.SetBool("Run", false);
            scrabAnimator.SetBool("Attack", true);
            break;

        case EnemyStatus.enemy_Run:
            scrabAnimator.SetBool("Run", true);
            scrabAnimator.SetBool("Attack", false);
            break;

        case EnemyStatus.enemy_Death:
            scrabAnimator.SetBool("Death", true);
            deathParticle.SetActive(true);
            break;
        }
    }
Beispiel #28
0
 // Use this for initialization
 void Start()
 {
     player       = GameObject.FindGameObjectWithTag("Player");
     playerStatus = player.GetComponent <PlayerStatus> ();
     enemyStatus  = GetComponent <EnemyStatus> ();
     anim         = GetComponent <Animator>();
 }
Beispiel #29
0
    void OnTriggerEnter2D(Collider2D other)
    {
        // if colliding with an enemy, deal damage play hit animation
        if (other.CompareTag("Enemy"))
        {
            EnemyStatus enemyStatus = other.GetComponent <EnemyStatus>();
            if (enemyStatus != null)
            {
                float damage;
                if (userAttack >= 0)
                {
                    damage = baseDamage * (1 + (userAttack / 100f));
                }
                else
                {
                    // for now scale negative attack downward disproportionately
                    //float damage = baseDamage / (1 + (- userAttack / 100f));

                    damage = baseDamage * (1 + (userAttack / 100f));
                }
                enemyStatus.TakeDamage(damage);
            }
            if (playerStatusReference != null)
            {
                playerStatusReference.gainEnergy(1f);
            }
            speed = 0f;
            gameObject.SetActive(false);
        }
    }
Beispiel #30
0
 void Awake()
 {
     maxHitPoints = hitPoints;
     sr           = GetComponentsInChildren <SpriteRenderer> ();
     inputModule  = GetComponent <SimpleNPCInputModule> ();
     status       = EnemyStatus.Active;
 }
    void Awake()
    {
        animtor = GetComponent<Animator>();
        navAgent = GetComponent<NavMeshAgent>();
        opticSphereCol = GetComponent<SphereCollider>();
        playerGameObject = GameObject.FindGameObjectWithTag(DoneTags.player);
        animatorController = GameObject.Find(PathHelper.gameManagerPath).GetComponent<EnemyAnimatorController>();
        gameManager = GameObject.Find(PathHelper.gameManagerPath).GetComponent<GameManager>();
        enemyStatus = gameObject.transform.FindChild(GameObjectNameHelper.robotGuardName).GetComponent<EnemyStatus>();

        animtor.SetLayerWeight(1, 1f);
        animtor.SetLayerWeight(2, 1f);
    }
Beispiel #32
0
    public void Initialize(EnemyStatus enemy_,
                           CEnemy.AI AI_type_)
    {
        max_HP = enemy_.HP;
        HP = max_HP;
        ATK = enemy_.ATK;
        speed = enemy_.SPD;
        DEF = enemy_.DEF;
        coin_amount = enemy_.coin_amount;
        score = enemy_.score;
        ai_phase = 0;
        current_animation = AnimationName.normal;

        SetShooter();

        SetAI(AI_type_);
    }
Beispiel #33
0
 /// <summary>
 /// This method instanciates a new enemey.
 /// </summary>
 /// <param name="x">The x start positon.</param>
 /// <param name="startPosition">The start position on the level map.</param>
 /// <param name="speed">The speed of the enemey</param>
 /// <param name="movePattern">Which move pattern the enemy uses.</param>
 /// <param name="enemyType">Which type of enemey this is.</param>
 /// <param name="bulletType">Which type of bullets the enemy fires.</param>
 /// <param name="bulletPower">How powerfull the enemy bullets are.</param>
 /// <param name="bulletSpeed">How fast the enemey bullets are.</param>
 /// <param name="bulletReloadTime">How long it takes for the plane to reload.</param>
 /// <param name="shieldThicknes">How thick the shiled of the enemy is.</param>
 /// <param name="score">The score the player recives by killing this enemey.</param>
 public Enemy(int x, int startPosition, double speed, MovePattern movePattern, EnemyType enemyType, BulletType bulletType, int bulletPower, double bulletSpeed, double bulletReloadTime, int power, int score)
 {
     this.x = x;
     this.y = -32;
     this.tempY = this.y;
     this.speed = speed;
     this.score = score;
     this.startPosition = startPosition;
     this.movePattern = movePattern;
     this.enemyType = enemyType;
     this.bulletType = bulletType;
     this.bulletPower = bulletPower;
     this.bulletSpeed = bulletSpeed;
     this.bulletReloadTime = bulletReloadTime;
     this.bulletTick = (int)(bulletReloadTime - (bulletReloadTime / 4)); //Making the plane able to fire the first bullet after one fourth of the bullet reload time.
     this.power = power;
     this.spriteTick = 0;
     this.collitionRectangle = new Rectangle(x, y, spriteSize.Width, spriteSize.Height);
     this.Status = EnemyStatus.Idle;
     SetEnemySpesific();
 }
Beispiel #34
0
        public BaseEnemy(Color enemyColor)
        {
            this.IsFollowed = false;

            this.enemyColor = enemyColor;
            this.MainColor = Color.White;
            this.speed = 0;
            this.damagePercentage = 0.2f;
            this.freezeResistance = 0.1f;
            this.freezeReviving = 0.005f;
            this.lightingPercent = 1f;

            this.random = OGE.Random;

            IntializeParticleGenerators();

            this.isHit = false;
            this.hitAlarm = new Alarm(0.2f, TweenType.OneShot, new AlarmFinished(HitEnded));
            AddTween(hitAlarm);

            this.enemyStatus = EnemyStatus.Standing;
            this.aiFunctions = new Dictionary<EnemyStatus, AIEnemyFunction>();
            this.aiFunctions.Add(EnemyStatus.Enterance, new AIEnemyFunction(EnteranceAI));
            this.aiFunctions.Add(EnemyStatus.Standing, new AIEnemyFunction(StandingAI));
            this.aiFunctions.Add(EnemyStatus.Moving, new AIEnemyFunction(MovingAI));
            this.aiFunctions.Add(EnemyStatus.Attacking, new AIEnemyFunction(AttackingAI));

            this.thrusters = new List<EnemyThrusterData>();
            this.SlowFactor = 1;

            this.freezeImage = new Image(OGE.Content.Load<Texture2D>(@"Graphics\Entities\Enemies\Freeze"));
            this.freezeImage.CenterOrigin();
            this.freezeImage.Angle = random.Next(360);

            this.EntityCollisionType = CollisionType.Enemy;
        }
Beispiel #35
0
 /// <summary>
 /// Method moving the enemey.
 /// </summary>
 public void Move()
 {
     if(Status == EnemyStatus.Idle)
         Status = EnemyStatus.Moving;
     switch(movePattern)
     {
         case MovePattern.Straight :
         default :
             tempY += speed;
             y = (int)tempY;
             break;
     }
 }
Beispiel #36
0
        protected virtual void AttackingAI()
        {
            UpdateMovingParameter();

            List<BaseEntity> player = OGE.CurrentWorld.GetCollisionEntitiesType(CollisionType.Player);
            if (player.Count > 0)
            {
                destinationDirection = OGE.GetAngle(Position, player[0].Position);
            }
            else
            {
                enemyStatus = EnemyStatus.Moving;
            }

            Vector2 speedVector = OGE.GetProjection(speed, direction);

            Position = Position + speedVector;

            foreach (EnemyThrusterData thrust in thrusters)
            {
                trailGenerator.Angle = direction + thrust.Direction;
                trailGenerator.GenerateParticles(Position + OGE.GetProjection(thrust.Length, direction + thrust.Direction));
            }
        }
Beispiel #37
0
 /// <summary>
 /// Method drawing an exploding plane.
 /// </summary>
 /// <param name="g">The graphics object used to draw the explotion.</param>
 private void DrawExplotion(Graphics g)
 {
     if(spriteSize.Width > 32)
         g.DrawImage(SpriteList.Instance.BigExplotion[explotionSpriteIndexes[(int)spriteTick]], new Rectangle(x, y, spriteSize.Width, spriteSize.Height), 0, 0, spriteSize.Width, spriteSize.Height, GraphicsUnit.Pixel, imgAttribs);
     else
         g.DrawImage(SpriteList.Instance.SmallExplotion[explotionSpriteIndexes[(int)spriteTick]], new Rectangle(x, y, spriteSize.Width, spriteSize.Height), 0, 0, spriteSize.Width, spriteSize.Height, GraphicsUnit.Pixel, imgAttribs);
     spriteTick += 0.5;
     if(spriteTick == explotionSpriteIndexes.Length)
         Status = EnemyStatus.Dead;
 }
 // Use this for initialization
 void Start()
 {
     enemyStatus = FindObjectOfType<EnemyStatus> ();
     score = FindObjectOfType<Score> ();
 }
Beispiel #39
0
        /// <summary>
        /// LoadContent はゲームごとに 1 回呼び出され,ここですべてのコンテンツを
        /// 読み込みます.
        /// </summary>
        protected override void LoadContent()
        {
            // 新規の SpriteBatch を作成します.これはテクスチャーの描画に使用できます.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            //シーンのロード
            textureTitle = Content.Load<Texture2D>("title");
            sceneTextureList.Add(textureTitle);
            textureGameScene = Content.Load<Texture2D>("stage1");
            sceneTextureList.Add(textureTitle);
            textureClear = Content.Load<Texture2D>("clear");
            sceneTextureList.Add(textureClear);
            textureGameover = Content.Load<Texture2D>("gameover");
            sceneTextureList.Add(textureGameover);

            //オブジェクトのロード
            textureArrow = Content.Load<Texture2D>("arrow");

            title = new Titlescene(textureTitle, textureArrow);
            SceneList.Add(title);
            gamescene = new Gamescene(textureGameScene);
            SceneList.Add(title);
            clearscene = new Gamescene(textureClear);
            SceneList.Add(clearscene);
            gameoverscene = new Gamescene(textureGameover);
            SceneList.Add(gameoverscene);

            textureEnemy1 = Content.Load<Texture2D>("watermelon");
            enemyTextureList.Add(textureEnemy1);
            textureEnemy1 = Content.Load<Texture2D>("melon");
            enemyTextureList.Add(textureEnemy1);
            textureEnemy1 = Content.Load<Texture2D>("kingyo");
            enemyTextureList.Add(textureEnemy1);
            textureEnemy1 = Content.Load<Texture2D>("stagbeetle");
            enemyTextureList.Add(textureEnemy1);
            textureEnemy1 = Content.Load<Texture2D>("pantsu");
            enemyTextureList.Add(textureEnemy1);
            textureEnemy1 = Content.Load<Texture2D>("bura");
            enemyTextureList.Add(textureEnemy1);
            
            textureTama = Content.Load<Texture2D>("tamatate");
            tamaTextureList.Add(textureTama);
            textureTama = Content.Load<Texture2D>("tama1");
            tamaTextureList.Add(textureTama);
            textureTama = Content.Load<Texture2D>("tama2");
            tamaTextureList.Add(textureTama);
            textureTama = Content.Load<Texture2D>("tama3");
            tamaTextureList.Add(textureTama);
            textureTama = Content.Load<Texture2D>("tama4");
            tamaTextureList.Add(textureTama);
            textureTama = Content.Load<Texture2D>("tama5");
            tamaTextureList.Add(textureTama);
            textureTama = Content.Load<Texture2D>("tama6");
            tamaTextureList.Add(textureTama);

            textureItem = Content.Load<Texture2D>("item1");
            itemTextureList.Add(textureItem);
            textureItem = Content.Load<Texture2D>("item2");
            itemTextureList.Add(textureItem);
            textureItem = Content.Load<Texture2D>("item3");
            itemTextureList.Add(textureItem);
            textureItem = Content.Load<Texture2D>("item4");
            itemTextureList.Add(textureItem);
            textureItem = Content.Load<Texture2D>("item5");
            itemTextureList.Add(textureItem);
            textureItem = Content.Load<Texture2D>("item6");
            itemTextureList.Add(textureItem);


            textureEffect = Content.Load<Texture2D>("effect1");
            EffectSp = new sprite(textureEffect, new Vector2(0, 0), new Point(100, 100), new Point(2, 1), 200);
            effectspriteList.Add(EffectSp);
            textureEffect = Content.Load<Texture2D>("effect2");
            EffectSp = new sprite(textureEffect, new Vector2(0, 0), new Point(50, 50), new Point(4, 1), 400);
            effectspriteList.Add(EffectSp);

            texturePlayer = Content.Load<Texture2D>("beetle");
            playerSp = new sprite(texturePlayer, new Vector2(0, 0), new Point(40, 60), new Point(3, 1), 5000);

            soundeffect = Content.Load<SoundEffect>("soundclear");//0
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundgameover");//1
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundhpreduce");//2
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundgetitem");//3
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundenemypowerdown");//4
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot1");//5
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot2");//6
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot3");//7
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot4");//8
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot5");//9
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot6");//10
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot7");//11
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot8");//12
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot9");//13
            soundeffectList.Add(soundeffect);
            soundeffect = Content.Load<SoundEffect>("soundshoot10");//14
            soundeffectList.Add(soundeffect);

            //bgm = Content.Load<Song>("bgm");

            //敵のステータスのロード
            EnemyStatus ene;
            ene = new EnemyStatus(1, 1, 10, 1); //スイカ
            enemyStatusList.Add(ene);
            ene = new EnemyStatus(2, 1, 20, 1); //メロン
            enemyStatusList.Add(ene);
            ene = new EnemyStatus(3, 1, 100, 1); //金魚
            enemyStatusList.Add(ene);
            ene = new EnemyStatus(4, 1, 1000, 10); //クワガタ
            enemyStatusList.Add(ene);
            ene = new EnemyStatus(5, 1, 100, 10); //パンツ
            enemyStatusList.Add(ene);
            ene = new EnemyStatus(5, 1, 100, 10); //ブラ
            enemyStatusList.Add(ene);

            // TODO: this.Content クラスを使用して,ゲームのコンテンツを読み込みます.

        }
	IEnumerator SummonEnemy(int number_of_summon,
	                        EnemyStatus enemy_,
	                        CEnemy.AI AI_type,
	                        CEnemy.StartPosition start_position,
	                        float delay = 0.5f)
	{
		GameObject enemy;
		
		enemy = ResourceLoad.PickGameObject(enemy_.name.ToString());
		
		for (int formation = 0; formation < number_of_summon; formation++)
		{
			GameObject temp = (GameObject)Instantiate(enemy, CEnemy.GetStartPosition(start_position), Quaternion.identity);
			CEnemy temp_enemy = temp.GetComponent<CEnemy>();
            temp_enemy.Initialize(enemy_, AI_type);
			
			yield return new WaitForSeconds(delay);
		}
	}
Beispiel #41
0
 /// <summary>
 /// Method executed when the enemey is hit by a player bullet.
 /// </summary>
 /// <param name="bullet">The bullet hitting the plane.</param>
 public void Hit(Bullet b)
 {
     if(Status == EnemyStatus.Moving)
     {
         power -= b.BulletPower;
         if(power <= 0)
         {
             Status = EnemyStatus.Dying;
             spriteTick = 0;
         }
     }
 }
Beispiel #42
0
 /// <summary>
 /// 敵のコンストラクタ
 /// </summary>
 /// <param name="setposi">敵の初期位置</param>
 /// <param name="settexture">敵のテクスチャ</param>
 /// <param name="setsize">敵のサイズ</param>
 /// <param name="enemynum">敵のテクスチャの種類番号</param>
 /// <param name="ugokinum">うごきの番号</param>
 /// <param name="es">敵のステータスクラスHP, speed, haveItem, scoreをもつ</param>
 /// <param name="setshootpatterni">弾道,玉の出し方</param>
 /// <param name="setshoottamai">打つ球のテクスチャの種類番号</param>
 public Enemy(Vector2 setposi, Texture2D settexture, Vector2 setsize, int enemynum, int ugokinum, EnemyStatus es, int sethaveitem, Uchikata setshootpatterni, int setshoottamatexturei)
 {
     position = new Vector2(setposi.X, setposi.Y);
     texture = settexture; //うまくいかなかったらここ
     size = new Vector2(setsize.X, setsize.Y);
     HP = es.HP;
     subayasa = es.subayasa;
     exist = true;
     shokiposi = setposi;
     haveitem = sethaveitem;
     status = 1;
     enemyn = enemynum;
     ugokin = ugokinum;
     score = es.score;
     sw1 = new Stopwatch();
     swforstatus = new Stopwatch();
     shootpatterni = setshootpatterni;
     shoottamatexturei= setshoottamatexturei;
     t = 0;
     ugokiflag1 = true;
     level = 1;
     AP = es.AP;
     haittaflg = false;
     speed.X = subayasa;
     speed.Y = subayasa;
     hansyaflg = false;
 }
Beispiel #43
0
    public IEnumerator SummonEnemy(float summon_time,
                                   int number_of_summon,
                                   EnemyStatus enemy_,
                                   CEnemy.AI AI_type_,
                                   CEnemy.StartPosition start_position,
                                   float delay = 0.5f)
    {
        GameObject enemy;

        enemy = ResourceLoad.PickGameObject(enemy_.name.ToString());

        yield return new WaitForSeconds(summon_time);

        level_difficulty = StageManager.LevelDifficulty;
        if (0 < level_difficulty)
        {
            enemy_.ATK *= (1 + (level_difficulty - 1) * 1.8f);
            enemy_.HP *= (1 + (level_difficulty - 1) * 1.1f);
            enemy_.score += (level_difficulty - 1) * 100;
        }

        for (int formation = 0; formation < number_of_summon; formation++)
        {
            GameObject temp = (GameObject)Instantiate(enemy, CEnemy.GetStartPosition(start_position), Quaternion.identity);
            CEnemy temp_enemy = temp.GetComponent<CEnemy>();
            temp_enemy.Initialize(enemy_, AI_type_);

            yield return new WaitForSeconds(delay);
        }
    }