Ejemplo n.º 1
0
    void Shoot()
    {
        //Disables the Line renderer so light is all you see
        line.enabled = false;
        //Sets the line renderer in the light origin
        line.SetPosition(0, transform.position);

        shootRay.origin    = transform.position;
        shootRay.direction = transform.forward;

        //If (Origin of the ray, what it has hit, how far it can go)
        //If this has hit something
        if (Physics.Raycast(shootRay, out shootHit, range, shootableMask))
        {
            //Get the enemy health script of that object the ray has hit
            EnemyHealth enemyHealth = shootHit.collider.GetComponent <EnemyHealth>();
            EnemyMove   enemyMove   = shootHit.collider.GetComponent <EnemyMove>();
            //If the object you hit has a health script subtract it by damage per shot
            if (enemyHealth != null)
            {
                enemyHealth.TakeDamage(damagePerShot, shootHit.point);
            }
            //sets the end of the Line renderer at the thing it has hit
            enemyMove.speed = 30f;
            line.SetPosition(1, shootHit.point);
        }
        //else make the line go far out 100 units (range)
        else
        {
            line.SetPosition(1, shootRay.origin + shootRay.direction * range);
        }
    }
Ejemplo n.º 2
0
    public float tumble = 10.0f; //旋转速度

    // Use this for initialization
    void Start()
    {
        instance           = this;
        rb                 = GetComponent <Rigidbody2D>();
        rb.angularVelocity = tumble;//定义角速度旋转
        setNew();
    }
Ejemplo n.º 3
0
    public void GenerateEnemyMove()
    {
        float movePct = Random.Range(0.0f, 1.0f);

        if (movePct <= 0.100f)
        {
            currentEnemyMove = enemyMoveList[2];
        }

        else if (movePct >= 0.101f && movePct <= 0.250)
        {
            currentEnemyMove = enemyMoveList[1];
        }

        else if (movePct >= 0.251f && movePct <= 0.500)
        {
            currentEnemyMove = enemyMoveList[3];
        }

        else
        {
            currentEnemyMove = enemyMoveList[0];
        }

        enemyCooldown = currentEnemyMove.cooldown;
    }
Ejemplo n.º 4
0
    //Set custom stats for coconut enemy
    public override void SetStats()
    {
        MAX_HEALTH   = 10;
        MAX_ENERGY   = 100;
        baseStats[0] = 15;
        baseStats[1] = 6;
        baseStats[2] = 7;

        //Create different enemy moves
        moves = new List <EnemyMove>();
        EnemyMove move = new EnemyMove(this, IType.MoveType.InstantAttack, 30, currentType);

        move.damageScale = 1.3f;
        moves.Add(move);
        move             = new EnemyMove(this, IType.MoveType.InstantAttack, 50, currentType);
        move.damageScale = 2f;
        moves.Add(move);
        move             = new EnemyMove(this, IType.MoveType.DelayedAttack, 40, currentType);
        move.damageScale = 1.5f;
        moves.Add(move);
        move = new EnemyMove(this, IType.MoveType.InstantPassive, 40, currentType);
        moves.Add(move);
        move = new EnemyMove(this, IType.MoveType.DelayedPassive, 25, currentType);
        moves.Add(move);
    }
Ejemplo n.º 5
0
    void OnAttack(Transform enemy)
    {
        // Point
        gameManager.stagePoint += 100;
        // Reaction Force
        rigid.AddForce(Vector2.up * 10, ForceMode2D.Impulse);

        // Enemy Die
        EnemyMove enemyMove = enemy.GetComponent <EnemyMove>();

        if (enemyMove != null)
        {
            enemyMove.OnDamaged();
        }

        FlyEnemy flyEnemy = enemy.GetComponent <FlyEnemy>();

        if (flyEnemy != null)
        {
            flyEnemy.OnDamaged();
        }

        PopEnemy popEnemy = enemy.GetComponent <PopEnemy>();

        if (popEnemy != null)
        {
            popEnemy.OnDamaged();
        }


        // Sound
        PlaySound("ATTACK");
        audioSource.Play();
    }
Ejemplo n.º 6
0
 // Start is called before the first frame update
 void Start()
 {
     enemy         = GameObject.FindGameObjectWithTag("Enemy");
     enemyMove     = enemy.GetComponent <EnemyMove>();
     warningDigree = 12.5f;
     warnigUI      = warnngSliderCtr.GetComponent <WarnigUI>();
 }
 // Start is called before the first frame update
 void Start()
 {
     eNum = 1;
     eB   = enemy.GetComponent <EnemyBullet>();
     eM   = enemy.GetComponent <EnemyMove>();
     StartCoroutine(PopEnemy());
 }
Ejemplo n.º 8
0
    //初期化
    public void Initialize(ENEMY_TYPE enemy_type, float move_speed, int hit_point)
    {
        _enemy_type = enemy_type;
        _move_speed = move_speed;
        _hit_point  = hit_point;

        switch (_enemy_type)
        {
        case ENEMY_TYPE.TYPE_A:
            _enemy_move = new StraightMove( );
            break;

        case ENEMY_TYPE.TYPE_B:
            _enemy_move = new ArcMove( );
            break;

        case ENEMY_TYPE.TYPE_C:
            _enemy_move = new WaveMove( );
            break;

        default:
            Assert.IsNotNull(_enemy_move, "[Enemy]敵の種類が入ってません");
            break;
        }
    }
Ejemplo n.º 9
0
 /// <summary>
 /// Determines which move has a higher priority
 /// </summary>
 /// <param name="m">The move to check this one against</param>
 public int CompareTo(EnemyMove m)
 {
     if (priority > m.priority)
     {
         return(-1);
     }
     else if (priority < m.priority)
     {
         return(1);
     }
     else
     {
         if (reasonPriority > m.reasonPriority)
         {
             return(-1);
         }
         else if (reasonPriority < m.reasonPriority)
         {
             return(1);
         }
         else
         {
             return(0);
         }
     }
 }
Ejemplo n.º 10
0
    void OnWizardCreate()
    {
        GameObject enemyGO = new GameObject();

        if (isMove)
        {
            EnemyMove enemyMove = enemyGO.AddComponent <EnemyMove>();
            enemyMove.speed = enemySpeed;
        }

        enemyGO.name = enemyName;
        SpriteRenderer spriteRender = enemyGO.AddComponent <SpriteRenderer>();

        spriteRender.sprite = enemySprite;
        Animator anime = enemyGO.AddComponent <Animator>();

        BoxCollider box     = enemyGO.AddComponent <BoxCollider>();
        Vector3     boxSize = spriteRender.bounds.size;

        box.size = boxSize;
        float x = Random.Range(210, 230);
        float z = Random.Range(110, 135);

        Debug.Log("Sprite render size: " + spriteRender.bounds.size);

        enemyGO.transform.position = new Vector3(x, 2.47f, z);
    }
Ejemplo n.º 11
0
 void Awake()
 {
     anim        = this.GetComponent <Animator>();
     agent       = this.GetComponent <NavMeshAgent>();
     enemyMove   = this.GetComponent <EnemyMove>();
     enemyAttack = this.GetComponent <EnemyAttack>();
 }
Ejemplo n.º 12
0
    public override void SetStats()
    {
        //Custom stats
        MAX_HEALTH   = 12;
        MAX_ENERGY   = 100;
        baseStats[0] = 13;
        baseStats[1] = 8;
        baseStats[2] = 4;

        //Custom moves
        moves = new List <EnemyMove>();
        EnemyMove move = new EnemyMove(this, IType.MoveType.InstantAttack, 30, currentType);

        move.damageScale = 1.2f;
        moves.Add(move);
        move             = new EnemyMove(this, IType.MoveType.InstantAttack, 50, currentType);
        move.damageScale = 1.7f;
        moves.Add(move);
        move             = new EnemyMove(this, IType.MoveType.DelayedAttack, 40, currentType);
        move.damageScale = 1.5f;
        moves.Add(move);
        move = new EnemyMove(this, IType.MoveType.InstantPassive, 40, currentType);
        moves.Add(move);
        move = new EnemyMove(this, IType.MoveType.DelayedPassive, 25, currentType);
        moves.Add(move);
    }
Ejemplo n.º 13
0
    void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.tag == "Player")
        {
            StartCoroutine(CheckAnimationState());

            if (State_PlayerDie == true)
            {
                PlayerObj  = GameObject.Find("Player_SwordMan").GetComponent <Transform>();
                Enemy_Move = GetComponentInParent <EnemyMove>();

                if (Enemy_Move.Enemy_Dir == 0)
                {
                    PlayerObj.transform.localScale = new Vector3(1, 1, 1);
                }
                else if (Enemy_Move.Enemy_Dir == 1)
                {
                    PlayerObj.transform.localScale = new Vector3(-1, 1, 1);
                }

                int Random_Sound = Random.Range(0, 5);

                Sound_Source.clip = Sound_SwordHit[Random_Sound];
                Sound_Source.PlayOneShot(Sound_Source.clip);
                Sound_Source.clip = Sound_SwordSwing[Random_Sound];
                Sound_Source.PlayOneShot(Sound_Source.clip);

                Player_Ani = collision.GetComponent <Animator>();
                Player_Ani.Play("Die");
            }
        }
    }
Ejemplo n.º 14
0
    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;
        }
    }
Ejemplo n.º 15
0
    void Awake()
    {
        move = GetComponent <EnemyMove> ();

        playerMask.value = LayerMask.GetMask("Player");
        startPosition    = transform.position;
    }
Ejemplo n.º 16
0
	void Awake(){
		anim = this.GetComponent<Animator> ();
		agent = this.GetComponent<NavMeshAgent> ();
		enemyMove = this.GetComponent<EnemyMove> ();
		particleSystem = this.GetComponentInChildren<ParticleSystem> ();
	//	enemyAttack = this.GetComponent<EnemyAttack> ();
	}
Ejemplo n.º 17
0
    // Update is called once per frame
    void Update()
    {
        RaycastHit2D ray = Physics2D.Raycast(transform.position, transform.right * -1, distance, isLayer);

        if (ray.collider != null)
        {
            if (ray.collider.tag == "Enemy")
            {
                EnemyMove enemyMove = ray.collider.transform.GetComponent <EnemyMove>();
                enemyMove.OnDamaged();
            }
            else if (ray.collider.tag == "Player")
            {
                Debug.Log("명중!");
                PlayerMove player = ray.collider.transform.parent.GetComponent <PlayerMove>();
                player.OnDamaged();
            }
            DestroyBullet();
        }

        if (transform.rotation.y == 0)
        {
            transform.Translate(transform.right * -1 * speed * Time.deltaTime);
        }
        else
        {
            transform.Translate(transform.right * speed * Time.deltaTime);
        }
    }
Ejemplo n.º 18
0
 protected override void Start()
 {
     base.Start();
     mTransformer   = GetComponent <EnemyWeaponTransformer>();
     mMover         = GetComponent <EnemyMove>();
     AllowTwoHanded = true;
 }
Ejemplo n.º 19
0
 // Use this for initialization
 void Start()
 {
     if (GetComponentInParent <EnemyMove> () != null) {
                     RightOrNot = GetComponentInParent<EnemyMove> ();
                     OldFace = RightOrNot.faceright;
             }
 }
Ejemplo n.º 20
0
    //ENEMY heals ENEMY
    public void e_resolve_heal(Enemy unit, EnemyMap eMap)
    {
        reset_targetLists();
        EnemyMove move = unit.nextMove;

        //gather targets
        switch (move.get_highlightType())
        {
        case 0:     //standard rectangular.
            for (int c = unit.nextX; c < (unit.nextX + move.get_ysize()); c++)
            {
                for (int r = unit.nextY; r < (unit.nextY + move.get_xsize()); r++)
                {
                    if (eMap.search_enemy(c, r) != null)
                    {
                        if (!e_targets.Contains(eMap.search_enemy(c, r)))
                        {
                            e_targets.Add(eMap.search_enemy(c, r));
                        }
                    }
                    else
                    {
                        eMap.tilegrid[r, c].GetComponent <EnemyTile>().show_heal_text("miss");
                    }
                }
            }
            break;

        case 1:
            //self
            e_targets.Add(unit);
            break;
        }
        //now, heal the targets
        foreach (Enemy target in e_targets)
        {
            //calc heal:
            bool ignoreMax = false;
            int  heal      = 0;
            if (move.get_hasCustomHeal())
            {
                //Debug.Log("custom heal going");
                StartCoroutine(show_battleNumbers(target.stats.get_floatingHp().gameObject, 2.25f));
                heal      = move.calc_custom_heal(unit);
                ignoreMax = move.get_ignoreHealMax();
            }
            else
            {
                StartCoroutine(show_battleNumbers(target.stats.get_floatingHp().gameObject, 1));
                heal = e_calc_heal(unit, target);
            }

            //display heal number
            if (heal != -1)
            {
                e_do_heal(target, heal, ignoreMax);
                eMap.tilegrid[target.get_x(), target.get_y()].GetComponent <EnemyTile>().show_heal_text(heal.ToString());
            }
        }
    }
Ejemplo n.º 21
0
    private void OnAttack(Transform enemy)
    {
        EnemyMove enemyMove = enemy.GetComponent <EnemyMove>();

        enemyMove.OnDamaged();
        gameManager.stagePoint += 100;
    }
Ejemplo n.º 22
0
        public void EnemyMove_can_parse_sector(string input, int expected)
        {
            EnemyMove move = new EnemyMove(input);

            Assert.True(move.HasSector);
            Assert.Equal(expected, move.Sector.Value.Number);
        }
Ejemplo n.º 23
0
    IEnumerator Die()
    {
        if (GetComponent <EnemyMove>())
        {
            EnemyMove enemy = GetComponent <EnemyMove>();
            for (int i = 0; i < enemy.GetComponentsInChildren <Rigidbody>().Length; i++)
            {
                enemy.GetComponentsInChildren <Rigidbody>()[i].isKinematic = false;
            }
            enemy.enemyAnimator.enabled = false;
            yield return(new WaitForEndOfFrame());

            enemy.isDead = true;
        }
        if (GetComponent <PlayerMove>())
        {
            PlayerMove player = GetComponent <PlayerMove>();
            for (int i = 0; i < player.GetComponentsInChildren <Rigidbody>().Length; i++)
            {
                player.GetComponentsInChildren <Rigidbody>()[i].isKinematic = false;
            }
            yield return(new WaitForEndOfFrame());

            player.playerAnimator.enabled = false;
        }
    }
Ejemplo n.º 24
0
    public IEnumerator Stage1()
    {
        // 스테이지 1 BGM 재생
        SoundManager.instance.PlayBGM(1);

        yield return(new WaitForSeconds(2.0f));

        #region Enemy Appear

        int[] enemyItem = new int[11] {
            3, 5, 2, 2, 0, 0, 0, 1, 0, 0, 0
        };
        float[] enemyHP = new float[6] {
            200.0f, 160.0f, 240.0f, 200.0f, 240.0f, 220.0f
        };
        Vector3 spawnPosition  = new Vector3(0.0f, 5.0f, 0.0f);
        Vector3 targetPosition = new Vector3(0.0f, 3.0f, 0.0f);

        GameObject boss = CreateBoss(spawnPosition, "ENEMY", LayerMask.NameToLayer("ENEMY_BODY"), new Vector3(1.5f, 1.5f, 1.0f),
                                     0.2f, 3, false, EnemyType.ENEMYTYPE_BOSS, enemyItem, 1, enemyHP);
        EnemyMove enemyMove = boss.GetComponent <EnemyMove>();
        EnemyFire enemyFire = boss.GetComponent <EnemyFire>();

        StartCoroutine(enemyMove.EnemyMoveOnce(targetPosition, iTween.EaseType.easeOutQuad, 1.0f));

        yield return(new WaitForSeconds(1.5f));

        enemyFire.EnemyBossAttack(GameData.currentStage, GameData.currentChapter);

        #endregion
    }
Ejemplo n.º 25
0
        public void EnemyMove_can_parse_movement(string input, Direction expected)
        {
            EnemyMove move = new EnemyMove(input);

            Assert.True(move.IsMovement);
            Assert.Equal(expected, move.Movement);
        }
Ejemplo n.º 26
0
    //初期設定
    public void setUp()
    {
        //使用する各種コンポーネントを設定
        enemyMove  = GetComponent <EnemyMove> ();
        shottype   = GetComponent <ShotType> ();
        spaceship  = GetComponent <Spaceship> ();
        managerObj = FindObjectOfType <Manager> ();

        //プレイヤーを設定 || Player -> null, Player(Clone) -> OK
        playerObj = GameObject.Find(managerObj.selectedPlayer.name + "(Clone)");
        //managerObj.selectedPlayer.name + "(Clone)"
        // 倒した時のポイントを設定
        if (isLastBoss != false)
        {
            point = LAST_BOSS_POINT;
        }
        else if (isSpecialEnemy != false)
        {
            point = SPECIAL_ENEMY_POINT;
        }
        else
        {
            point = NORMAL_ENEMY_POINT;
        }
    }
Ejemplo n.º 27
0
    // Use this for initialization
    public override void Init(Stats _stat)
    {
        _properties = _stat;

        //ステータスのセット
        SetStatus(Enemy.Type.MEEL, MaxHitPoint, Speed, SEARCH_RANGE, ATTACK_RANGE, MOVE_RANGE, MONEY);
        //忍耐値のセット
        _patienceValue = PATIENCE_VALUE;
        //移動コンポーネントの取得
        _move = GetComponent <EnemyMove> ();
        //リジットボディの取得
        RigidbodyProperties = GetComponent <Rigidbody> ();
        //索敵用オブジェクトの取得
        _searchObj = transform.Find("SearchRange").gameObject;
        _searchObj.GetComponent <SearchPlayer> ().Initialize();
        //自由移動ポジション設定
        _freeMovePosition = _move.SetMovePos();
        //武器プレハブの取得
        SetWeapons();
        _anim = GetComponent <SimpleAnimation>();
        _anim.GetState("Open").speed  = 5.0f;
        _anim.GetState("Close").speed = 5.0f;
        _anim.CrossFade("Idle", 0f);
        _animName = "Idle";

        _isLady = true;
    }
Ejemplo n.º 28
0
    EnemyMove CheckForAttackingRobots()
    {
        RaycastHit2D[] hits      = Physics2D.RaycastAll(transform.position, playerTarget.position);
        EnemyMove      newTarget = null;

        if (hits.Length > 0)
        {
            foreach (RaycastHit2D hit in hits)
            {
                if (hit.transform == transform)
                {
                    continue;
                }
                EnemyMove em = hit.transform.GetComponent <EnemyMove>();
                if (em == null)
                {
                    continue;
                }
                if (!em.isControlledByPlayer)
                {
                    continue;
                }
                newTarget = em;
            }
        }
        return(newTarget);
    }
Ejemplo n.º 29
0
        private void Awake()
        {
            _stateMachine = new StateMachine();

            var idle   = new EnemyIdle(this);
            var attack = new EnemyAttack(this);
            var move   = new EnemyMove(this, _rigidbody);
            var death  = new EnemyDeath(this, _collider);

            At(idle, move, hasTarget());
            At(move, idle, lostTarget());

            At(move, attack, reachedTarget());

            At(attack, idle, lostTarget());
            At(attack, move, targetOutOfRange());

            At(idle, death, isDead());
            At(move, death, isDead());
            At(attack, death, isDead());

            Func <bool> hasTarget() => () => Target != null;
            Func <bool> lostTarget() => () => Target == null;
            Func <bool> reachedTarget() => () => Vector2.Distance(transform.position, Target.transform.position) < attackRange - 0.5f;
            Func <bool> targetOutOfRange() => () => Target != null && Vector2.Distance(transform.position, Target.transform.position) > attackRange - 0.5f;
            Func <bool> isDead() => () => health <= 0;

            void At(IState from, IState to, Func <bool> condition) => _stateMachine.AddTransition(from, to, condition);

            _stateMachine.SetState(idle);
        }
 void GetAndSetCompoents()
 {
     _collider = GetComponent <QuadtreeCollider>();
     _life     = GetComponent <Life>();
     _shot     = GetComponent <EnemyShot>();
     _move     = GetComponent <EnemyMove>();
 }
Ejemplo n.º 31
0
 void Start()
 {
     m_CircleCollider2D = GetComponent <CircleCollider2D>();
     m_EnemyHealth      = m_HealthAmount;
     m_EnemyAttack      = m_AttackDamage;
     m_EnemyMove        = gameObject.GetComponent <EnemyMove>();
 }
Ejemplo n.º 32
0
    IEnumerator RandomEnemy()
    {
        //
        for (int n = 0; n < 4; n++)
        {
//			//Animatorフラグをセット
//			create_clip = true;

            //Enemyを生成(オリジナルのposition位置)
            GameObject enemy_copy = this.Instantiate(enemy_prefab, new Vector3(EmitterRan_Pos_x, EmitterRan_Pos_y, 0f), Quaternion.identity) as GameObject;
            //Enemyの生成(EmitterRandom位置)
//			Instantiate(enemy_prefab, transform.position, Quaternion.identity);
//			Instantiate(enemy_prefab, new Vector3(0f, 0f, 0f), Quaternion.identity);

//			//EnemyMoveコンポーネントを取得
//			enemy_move = Enemy.GetComponent<EnemyMove>();
            enemy_move = enemy_copy.GetComponent <EnemyMove>();
//
//			//Spaceshipコンポーネントを取得
//			spaceship_clip = Enemy.GetComponent<Spaceship>();
            spaceship_clip = enemy_copy.GetComponent <Spaceship>();
//
//			//Createアニメーションを呼び出す
            spaceship_clip.GetComponent <Animator>().SetBool("Create", create_clip);
//
//			//Enemy_プレファブのtransform.positionから修正
//			//enemy_copy.transform.Translate (3.5f, -6.4f, 0.1f);
//
//			//移動スピード
            enemy_move.enemySpeed = enemy_speed;

            //コルーチンで時間指定
            yield return(new WaitForSeconds(enemy_interval));
        }
    }
Ejemplo n.º 33
0
 void Start()
 {
     _enemy = FindObjectOfType<EnemyMove>();
     _sensor = FindObjectOfType<EnemySensor>();
 }
Ejemplo n.º 34
0
 // Use this for initialization
 void Start()
 {
     enemyMove = GetComponent<EnemyMove>();
     //moveSpeed = 0.05F;
 }
 void Awake()
 {
     // Setting up the references.
     _Movement = GetComponent<EnemyMove>();
 }
Ejemplo n.º 36
0
 void Awake()
 {
     movement = GetComponent<EnemyMove>();
 }