Пример #1
0
        void Shoot(BULLET_TYPE bullet_type)
        {
            subGotoPosition  = enemyposi.transform.position - muzzlesub.transform.position;
            mainGotoPosition = enemyposi.transform.position - muzzlemain.transform.position;

            // 弾丸の複製
            switch (bullet_type)
            {
            case BULLET_TYPE.AUTO_SHOOT:
                bulletsmain = GameObject.Instantiate(bullet_auto) as GameObject;
                bulletssub  = GameObject.Instantiate(bullet_auto) as GameObject;
                break;

            case BULLET_TYPE.CHARGE_SHOOT:
                bulletsmain = GameObject.Instantiate(bullet_charge) as GameObject;
                bulletssub  = GameObject.Instantiate(bullet_charge) as GameObject;
                break;
            }

            // Rigidbodyに力を加えて発射
            bulletsmain.GetComponent <Rigidbody>().AddForce(mainGotoPosition * B_SPEED[Shooting_2.iNowChar, iNowBulletLevel]);
            bulletssub.GetComponent <Rigidbody>().AddForce(subGotoPosition * B_SPEED[Shooting_2.iNowChar, iNowBulletLevel]);

            // 弾丸の位置を調整
            bulletsmain.transform.position = muzzlemain.position;
            bulletssub.transform.position  = muzzlesub.position;
        }
Пример #2
0
    void OnTriggerEnter2D(Collider2D collision)
    {
        print("start of collision");
        if (collision.gameObject.GetComponent <bullet_controller>())
        {
            int         damage = collision.gameObject.GetComponent <bullet_controller>().damage;
            BULLET_TYPE type   = collision.gameObject.GetComponent <bullet_controller>().type;
            print("in first if");
            if (type == BULLET_TYPE.ENEMY)
            {
                Destroy(collision.gameObject);
                hp -= damage;
                if (hp <= 0)
                {
                    Destroy(gameObject);
                    if (placed != TOWER_TYPE.NULL)
                    {
                        Destroy(rightTower);
                        Destroy(leftTower);
                    }

                    Instantiate(explosion, transform.position, Quaternion.identity);
                }
                print("skyship taking damage");
            }
        }
    }
Пример #3
0
    public void Init(BULLET_TYPE pType, float pPower, bool pUseGravity, Vector3 pDir, long pDamage, float pGravity = 7.0f)
    {
        this.transform.position = originObj.transform.position;
        //this.transform.localScale = new Vector3(1, 1, 1);

        type = pType;
        //rangeCollider = parentMonster.GetComponent<cEnemy_monster>().notizer.GetComponent<CircleCollider2D>();
        //attackRange = rangeCollider.radius;
        damage = pDamage;

        splitCount        = 0;
        explodeOn         = false;
        explodeTime       = 3.0f;
        isCollide         = false;
        upBlockedContinue = false;
        gravityAmount     = pGravity;

        flyingTime    = 0;
        defaultPower  = pPower;
        changingPower = defaultPower;
        isReflectOn   = true;
        isGravityOn   = pUseGravity;
        SetDir(pDir);

        isInit = true;
    }
    public Bullet AddBullet(BULLET_TYPE type)
    {
        string path = null;

        switch (type)
        {
        case BULLET_TYPE.B_HERO_DEF:     //path = GamePath.WEAPON_BULLET_DEF; break;
        {
            return(AddBulletHero());
        }

        case BULLET_TYPE.B_BOSS1_P1:
        {
            path = GamePath.WEAPON_BULLET_BOSS;
            return(AddBulletBoss1(path));
        }

        case BULLET_TYPE.EGG_BULLET:
        {
            path = GamePath.WEAPON_BULLET_EGG;
            return(AddBulletBoss1(path));
        }
        }



        return(null);
    }
Пример #5
0
 public BulletService(BULLET_TYPE _typeOfBullet)
 {
     typeOfBullet = _typeOfBullet;
     objectPool   = new ObjectPool <BulletController>();
     if (!bulletHolder)
     {
         bulletHolder      = new GameObject();
         bulletHolder.name = "Bullet Holder";
     }
     GameObject.DontDestroyOnLoad(bulletHolder);
 }
Пример #6
0
        public Bullet(BULLET_TYPE bulletType, DIRECTION direction, Point location)
        {
            InitializeComponent();
            SetTopLevel(false);

            this.direction  = direction;
            this.bulletType = bulletType;

            Location = location;
            Size     = new Size(TanksGame.bulletWidth, TanksGame.bulletHeight);
        }
Пример #7
0
    public void setPattern
        (bool isMix, PATTERN_NAME patternName, float XScale, float YScale, float speed, float anlge, float speedRate, float angleRate, float interval, float BulletSpeedRate = 0.0f, float BulletAngleRate = 0.0f,
        int Count        = 1, float MinInterval      = 0.0f,
        float RotAngle   = 90.0f, float RotAngleRate = 90.0f, float MaxAngle = 90.0f, int GroupCount = 0,
        BULLET_TYPE type = BULLET_TYPE.BASE, BULLET_IMAGE image = BULLET_IMAGE.BASE_BULLET1_1, float HomingRate = 0.0f, bool isHoming = false, float MoveTime = 0.0f, float StopTime = 0.0f, bool isMyPos = true, float StartX = 0.0f, float StartY = 0.0f)
    {
        m_isPatternMix = isMix;
        m_ePattern     = patternName;

        ScaleXY.x = XScale;
        ScaleXY.y = YScale;

        m_fSpeed     = speed;
        m_fAngle     = anlge;
        m_fSpeedRate = speedRate;
        m_fAngleRate = angleRate;

        m_iFireCount    = Count;
        m_fFireInterval = interval;

        m_fBullet_SpeedRate = BulletSpeedRate;
        m_fBullet_AngleRate = BulletAngleRate;

        m_fMaxAngle = MaxAngle;

        m_fRotateAngle     = RotAngle;
        m_fRotateAngleRate = RotAngleRate;

        m_fMiniFireInterval = MinInterval;

        m_eType  = type;
        m_eImage = image;

        m_iGroupCount = GroupCount;

        m_HomingRate = HomingRate;
        m_isHoming   = isHoming;

        m_MoveTime = MoveTime;
        m_StopTime = StopTime;

        m_fStartPosX = StartX;
        m_fStartPosY = StartY;
        m_isMyPos    = isMyPos;

        m_sImage = SpriteMGR.Instance.GetSprite(m_eImage);
    }
Пример #8
0
    public Transform CreateBullet <T>(BULLET_TYPE type, Vector3 dir, float moveTime, float speed, Transform TargetPlace = null, int lifeSpan = 100, float damage = 5f, bool whos_shot = true) where T : k514BulletBridge
    {
        int index = (int)type;

        if (index >= pfab.Length)
        {
            index = pfab.Length;
        }
        Transform        tmp  = null;
        T                tmp2 = null;
        k514BulletBridge tmp3 = null;

        int Cnt = bulletDisablePool[index].Count;

        if (Cnt < 1)
        {
            tmp  = Instantiate(pfab[index]);
            tmp2 = tmp.gameObject.AddComponent <T>();
            tmp2.SetID(index);
        }
        else
        {
            tmp3 = bulletDisablePool[index][Cnt - 1];
            if (tmp3.GetType() == typeof(T))
            {
                tmp2 = (T)tmp3;
            }
            else
            {
                tmp = tmp3.transform;
                Destroy(tmp.GetComponent <k514BulletBridge>());
                tmp2 = tmp.gameObject.AddComponent <T>();
            }
            tmp = tmp2.transform;
            tmp.gameObject.SetActive(true);
            bulletDisablePool[index].RemoveAt(Cnt - 1);
        }

        tmp2.Init(dir, moveTime, speed, lifeSpan, damage, whos_shot);

        if (TargetPlace != null)
        {
            tmp2.SetTargetTransform(TargetPlace);
        }
        return(tmp);
    }
Пример #9
0
    public void setPattern(PatternState stat)
    {
        m_isPatternMix = stat.m_isPatternMix;
        m_ePattern     = stat.m_ePattern;

        ScaleXY.x = stat.ScaleXY.x;
        ScaleXY.y = stat.ScaleXY.y;

        m_fSpeed     = stat.m_fSpeed;
        m_fAngle     = stat.m_fAngle;
        m_fSpeedRate = stat.m_fSpeedRate;
        m_fAngleRate = stat.m_fAngleRate;

        m_iFireCount    = stat.m_iFireCount;
        m_fFireInterval = stat.m_fFireInterval;

        m_fBullet_SpeedRate = stat.m_fBullet_SpeedRate;
        m_fBullet_AngleRate = stat.m_fBullet_AngleRate;

        m_fRotateAngle     = stat.m_fRotateAngle;
        m_fRotateAngleRate = stat.m_fRotateAngleRate;

        m_fMaxAngle = stat.m_fMaxAngle;

        m_fMiniFireInterval = stat.m_fMiniFireInterval;

        m_iGroupCount = stat.m_iGroupCount;

        m_eType  = stat.m_eType;
        m_eImage = stat.m_eImage;

        m_HomingRate = stat.m_HomingRate;
        m_isHoming   = stat.m_isHoming;

        m_StopTime = stat.m_StopTime;
        m_MoveTime = stat.m_MoveTime;


        m_fStartPosX = stat.m_fStartPosX;
        m_fStartPosY = stat.m_fStartPosY;

        m_isMyPos = stat.m_isMyPos;

        m_sImage = SpriteMGR.Instance.GetSprite(m_eImage);
    }
Пример #10
0
    public static float GetBulletDamage(BULLET_TYPE bulletType)
    {
        switch (bulletType)
        {
        case BULLET_TYPE.FIRE:
            return(10);

        case BULLET_TYPE.ICE:
            return(5);

        case BULLET_TYPE.STONE:
            return(10);

        case BULLET_TYPE.LIGHT:
            return(15);

        default:
            return(10);
        }
    }
Пример #11
0
    void PlayExplosionSound( BULLET_TYPE a, BULLET_TYPE b )
    {
        GameObject
            soundEffect;
        AmmoShotAudio
            audio;

        soundEffect = ( GameObject ) Instantiate( Resources.Load( "SOUND_NODE" ) );
        soundEffect.transform.position = transform.position;

        audio = soundEffect.GetComponent< AmmoShotAudio >();

        if( a == BULLET_TYPE.YELLOW && b == BULLET_TYPE.YELLOW )
        {
            audio.SetAudioSource( 10 );
        }
        else
        {
            audio.SetAudioSource( ( (int) a + (int) b ) * 2 );
        }
    }
Пример #12
0
    void OnTriggerEnter2D(Collider2D collision)
    {
        //print(stats["hp"]);

        /*
         * int damage = collision.gameObject.GetComponent<bullet_controller>().damage;
         * Destroy(collision.gameObject);
         * stats["hp"]-= damage;
         * if(stats["hp"] <= 0){
         *  Destroy(gameObject);
         *  Instantiate(explosion, transform.position, Quaternion.identity);
         * }
         */

        if (collision.gameObject.GetComponent <bullet_controller>())
        {
            int         damage = collision.gameObject.GetComponent <bullet_controller>().damage;
            BULLET_TYPE type   = collision.gameObject.GetComponent <bullet_controller>().type;
            if (type == BULLET_TYPE.FRIENDLY)
            {
                Destroy(collision.gameObject);
                stats["hp"] -= damage;
                Vector3 scaleChange = new Vector3(.25f * (float)stats["hp"] * stats["width"] / (float)stats["original_hp"], .25f, .25f);
                hpBarPrefab.transform.localScale = scaleChange;
                if (stats["hp"] <= 0)
                {
                    Destroy(hpBarPrefab);

                    skyship_controller.AwardMoney(stats["money"]);

                    Destroy(gameObject);
                    if (shooting)
                    {
                        Destroy(shooter);
                    }
                    Instantiate(explosion, transform.position, Quaternion.identity);
                }
            }
        }
    }
Пример #13
0
    //this is called whenever a player is hit and basically resets the shield recharge variables.

    public void ShieldHit(BULLET_TYPE bullet)
    {
        if (m_shieldHealth > 0)
        {
            switch (bullet)
            {
            case BULLET_TYPE.plasma:
                m_shieldHealth -= GetComponentInParent <Shoot>().m_bulletImpact;
                break;

            case BULLET_TYPE.shotgun:
                m_shieldHealth -= m_playerStats.m_Shoot.shotgunDamage;
                break;
            }
        }
        if (m_shieldHealth <= 0)
        {
            if (GetComponent <MeshRenderer>().enabled)
            {
                // SFX
                FindObjectOfType <AudioManager>().Play("Shield Shatter");
                Instantiate(m_Explosion, transform);
            }

            m_shieldHealth = 0;
            GetComponent <MeshRenderer>().enabled = false;
            m_playerStats.SetShieldState(false);

            // Stun the player if they are hit when shield down
            if (bullet == BULLET_TYPE.shotgun)
            {
                m_playerStats.stunTrigger = true;
                m_playerStats.StunTimer   = m_playerStats.maxShotgunStunTime;
            }
        }
        m_timeSinceLastHit = Time.time;
        m_hitUpdate        = Time.time;
        m_canRecharge      = false;
    }
Пример #14
0
    public void SetType(BULLET_TYPE pType)
    {
        type = pType;

        //switch (pType)
        //{
        //    case BULLET_TYPE.NORMAL:
        //        maxSpeed = 300f;
        //        curSpeed = maxSpeed;
        //        break;

        //    case BULLET_TYPE.SPLIT:
        //        maxSpeed = 300f;
        //        curSpeed = maxSpeed;
        //        break;

        //    case BULLET_TYPE.GRENADE:
        //        maxSpeed = 500f;
        //        curSpeed = maxSpeed;
        //        break;
        //}
    }
Пример #15
0
    //this is called whenever a player is hit and basically resets the shield recharge variables.

    public void ShieldHit(BULLET_TYPE bullet)
    {
        if (m_shieldHealth > 0)
        {
            switch (bullet)
            {
            case BULLET_TYPE.plasma:
                m_shieldHealth -= GetComponentInParent <Shoot>().m_bulletImpact;
                break;

            case BULLET_TYPE.shotgun:
                m_shieldHealth -= m_playerStats.m_Shoot.shotgunDamage;
                break;
            }
        }
        if (m_shieldHealth <= 0)
        {
            // SFX
            FindObjectOfType <AudioManager>().Play("Shield Shatter");

            // Add the player's outline
            m_playerRenderer.materials[1].SetColor("_OutlineColor", Color.red);
            m_playerRenderer.materials[1].SetFloat("_Outline", 0.15f);

            m_shieldHealth = 0;
            GetComponent <MeshRenderer>().enabled = false;
            m_playerStats.SetShieldState(false);

            // Stun the player if they are hit when shield down
            if (bullet == BULLET_TYPE.shotgun)
            {
                m_playerStats.stunTrigger = true;
                m_playerStats.StunTimer   = m_playerStats.maxShotgunStunTime;
            }
        }
        m_timeSinceLastHit = Time.time;
        m_hitUpdate        = Time.time;
        m_canRecharge      = false;
    }
Пример #16
0
    public void FireBullet(Vector2 StartPos, float StartAngle, float StartSpeed, PatternState stat)
    {
        m_cStat = stat;

        transform.position = StartPos;

        if (transform.localScale != stat.ScaleXY)
        {
            transform.localScale = stat.ScaleXY;
        }

        SetSprite(m_cStat.m_sImage);

        m_fAngle      = StartAngle;
        m_fSpeed      = StartSpeed;
        m_eBulletType = m_cStat.m_eType;

        //    SettingCollisionAndAngle();
        PlayStopaAndMove();

        m_isFire = true;

        StartTimer(3.0f);
    }
Пример #17
0
    public void FireBullet(Vector2 StartPos, float StartAngle, float StartSpeed, PatternState stat, PatternState bulletstat)
    {
        //   m_eType = MoverType.Bullet;
        m_cStat       = stat;
        m_cBulletStat = bulletstat;

        transform.position = StartPos;

        if (transform.localScale != stat.ScaleXY)
        {
            transform.localScale = stat.ScaleXY;
        }

        SetSprite(m_cStat.m_sImage);

        m_fAngle      = StartAngle;
        m_fSpeed      = StartSpeed;
        m_eBulletType = m_cStat.m_eType;

        PlayStopaAndMove();
        InstallTraill();

        m_isFire = true;
    }
Пример #18
0
    void Start()
    {
        player = GameObject.FindWithTag( TAGS.PLAYER ).transform;
        gameScript = GameObject.FindWithTag( TAGS.WORLD ).GetComponent< GameScript >();

        rigidBody = GetComponent< Rigidbody >();
        state = BULLET_STATE.GOING;

        direction = Vector3.zero;

        type = ( BULLET_TYPE ) BULLET_COUNTER;
        groupID = GROUP_COUNTER;

        YFlipBlocked = false;

        flipped = Vector3.one;

        IsDead = false;

        if( ++BULLET_COUNTER >= ( int ) BULLET_TYPE.COUNT )
        {
            BULLET_COUNTER = 0;
            ++GROUP_COUNTER;
        }

        block_reverse_time = MAX_BLOCK_TIME;

        switch( type )
        {
            case BULLET_TYPE.RED:
            {
                trail.material =
                    ( Material ) Instantiate( Resources.Load( "BULLET_TRAIL_RED_MATERIAL" ) );
            } break;

            case BULLET_TYPE.PURPLE:
            {
                trail.material =
                    ( Material ) Instantiate( Resources.Load( "BULLET_TRAIL_PURPLE_MATERIAL" ) );
            } break;

            case BULLET_TYPE.YELLOW:
            {
                trail.material =
                    ( Material ) Instantiate( Resources.Load( "BULLET_TRAIL_YELLOW_MATERIAL" ) );
            } break;
        }
    }
Пример #19
0
 public Bullet(int damage, float speed, BULLET_TYPE bulletType)
 {
     this.damage     = damage;
     this.speed      = speed;
     this.bulletType = bulletType;
 }