Beispiel #1
0
    /// <summary>
    /// 根据Id创建SimpleBullet原型
    /// </summary>
    /// <param name="bulletId"></param>
    /// <returns></returns>
    private GameObject CreateEnemySimpleProtoType(string bulletId)
    {
        GameObject            original  = Resources.Load <GameObject>("BulletPrefab/SimpleBullet");
        GameObject            protoType = GameObject.Instantiate <GameObject>(original);
        EnemyBulletDefaultCfg cfg       = BulletsManager.GetInstance().GetBulletDefaultCfgById(bulletId);
        string protoTypeName            = "EnemySimpleBullet" + bulletId;

        // 设置sprite以及material
        protoType.name = protoTypeName;
        SpriteRenderer sp = protoType.transform.Find("BulletSprite").GetComponent <SpriteRenderer>();

        if (cfg.aniFrameCount == 0)
        {
            sp.sprite = ResourceManager.GetInstance().GetSprite(Consts.STGBulletsAtlasName, cfg.spriteName);
        }
        else
        {
            sp.sprite = ResourceManager.GetInstance().GetSprite(Consts.STGBulletsAtlasName, cfg.spriteName + "_0");
        }
        if (cfg.blendMode != eBlendMode.Normal)
        {
            sp.material = ResourceManager.GetInstance().GetSpriteMatByBlendMode(cfg.blendMode);
        }
        UIManager.GetInstance().AddGoToLayer(protoType, LayerId.EnemyBarrage);
        // 添加原型到缓存池中
        ObjectsPool.GetInstance().AddProtoType(bulletId, protoType);
#if LogCreateBulletProto
        Logger.Log("Create Bullet ProtoType " + protoTypeName);
#endif
        return(protoType);
    }
Beispiel #2
0
    protected override void CheckCollisionWithPlayerBullet()
    {
        // 计算碰撞盒参数
        Vector2 lbPos = new Vector2(_curPos.x - _radius, _curPos.y - _radius);
        Vector2 rtPos = new Vector2(_curPos.x + _radius, _curPos.y + _radius);
        int     i, bulletCount;
        List <PlayerBulletBase> bulletList = BulletsManager.GetInstance().GetPlayerBulletList();
        PlayerBulletBase        bullet;

        bulletCount = bulletList.Count;
        for (i = 0; i < bulletCount; i++)
        {
            bullet = bulletList[i];
            // 判断是否要进行碰撞检测
            if (bullet != null &&
                bullet.ClearFlag == 0 &&
                bullet.DetectCollision() &&
                bullet.CheckBoundingBoxesIntersect(lbPos, rtPos))
            {
                if (DetectCollisionWithPlayerBullet(bullet))
                {
                    _collidedByPlayerBullet?.Invoke(this, bullet);
                }
            }
        }
    }
Beispiel #3
0
    public void Init()
    {
        // 游戏本体边界
        Global.GameLBBorderPos = new Vector2(-Consts.GameWidth / 2, -Consts.GameHeight / 2);
        Global.GameRTBorderPos = new Vector2(Consts.GameWidth / 2, Consts.GameHeight / 2);
        // 弹幕边界
        Global.BulletLBBorderPos = new Vector2(Global.GameLBBorderPos.x - 100, Global.GameLBBorderPos.y - 100);
        Global.BulletRTBorderPos = new Vector2(Global.GameRTBorderPos.x + 100, Global.GameRTBorderPos.y + 100);
        // 玩家坐标边界
        Global.PlayerLBBorderPos = new Vector2(Global.GameLBBorderPos.x + 10, Global.GameLBBorderPos.y + 10);
        Global.PlayerRTBorderPos = new Vector2(Global.GameRTBorderPos.x - 10, Global.GameRTBorderPos.y - 10);

        InterpreterManager.GetInstance().Init();
        STGStageManager.GetInstance().Init();
        AnimationManager.GetInstance().Init();
        BulletsManager.GetInstance().Init();
        EnemyManager.GetInstance().Init();
        ItemManager.GetInstance().Init();
        ColliderManager.GetInstance().Init();

        ExtraTaskManager.GetInstance().Init();

        EffectsManager.GetInstance().Init();
        STGEliminateEffectManager.GetInstance().Init();
        BackgroundManager.GetInstance().Init();
#if ShowCollisionViewer
        CollisionViewer.Instance.Init();
#endif
    }
Beispiel #4
0
    public override void SetStyleById(string id)
    {
        EnemyCurveLaserCfg cfg = BulletsManager.GetInstance().GetCurveLaserCfgById(id);

        if (cfg == null)
        {
            Logger.LogError("Bullet ChangeStyle Fail! SysId  " + id + " is not exist!");
            return;
        }
        if (_bullet != null)
        {
            ObjectsPool.GetInstance().RestorePrefabToPool(_prefabName, _bullet);
        }
        _cfg        = cfg;
        _bullet     = BulletsManager.GetInstance().CreateBulletGameObject(BulletType.Enemy_CurveLaser, cfg.id);
        _prefabName = cfg.id;
        _trans      = _bullet.transform;
        Transform laserTrans = _trans.Find("LaserObject");

        _mesh = laserTrans.GetComponent <MeshFilter>().mesh;
        if (_cfg.aniCount == 0)
        {
            int index = cfg.colorIndex;
            _textureIndex = 16 - index;
            _vUnit        = 1f / cfg.colorsCount;
            _startV       = _vUnit * (_textureIndex - 1);
            _endV         = _vUnit * _textureIndex;
        }
        _isPosModified = true;
    }
    protected override void CheckCollisionWithEnemyBullet()
    {
        float maxHalfSize = Mathf.Max(_halfWidth, _halfHeight);
        // 计算碰撞盒参数
        Vector2 lbPos = new Vector2(_curPos.x - maxHalfSize, _curPos.y - maxHalfSize);
        Vector2 rtPos = new Vector2(_curPos.x + maxHalfSize, _curPos.y + maxHalfSize);
        int     i, bulletCount;
        List <EnemyBulletBase> bulletList = BulletsManager.GetInstance().GetEnemyBulletList();
        EnemyBulletBase        bullet;

        bulletCount = bulletList.Count;
        for (i = 0; i < bulletCount; i++)
        {
            bullet = bulletList[i];
            // 判断是否要进行碰撞检测
            if (bullet != null &&
                bullet.ClearFlag == 0 &&
                bullet.CanBeEliminated(eEliminateDef.HitObjectCollider) &&
                bullet.CheckBoundingBoxesIntersect(lbPos, rtPos))
            {
                if (DetectCollisionWithEnemyBullet(bullet))
                {
                    _collidedByEnemyBullet?.Invoke(this, bullet);
                }
            }
        }
    }
Beispiel #6
0
 public void MultStartGame()
 {
     playingGame = true;
     BulletsManager.StartGame();
     StartCoroutine(ShootLoop(false));
     StartCoroutine(ShootLoop(true));
 }
 public override void Init()
 {
     base.Init();
     _isEliminating = false;
     BulletsManager.GetInstance().RegisterPlayerBullet(this);
     _movableObject = ObjectsPool.GetInstance().GetPoolClassAtPool <MovableObject>();
 }
 public override void Init()
 {
     base.Init();
     _isSized       = false;
     _curPos        = Vector2.zero;
     _existDuration = -1;
     BulletsManager.GetInstance().RegisterEnemyBullet(this);
     _isDirty                  = false;
     _pathCount                = 0;
     _clearFlag                = 0;
     _isHeadEnable             = false;
     _isSourceEnable           = false;
     _isInitSourcePos          = true;
     _laserSegmentCount        = 0;
     _isCachedCollisionSegment = false;
     _collidedSegmentCount     = 0;
     _isInitAngle              = false;
     _laserLen                 = 0;
     _renderObjPos             = true;
     _timeSinceLastVChanged    = 0;
     _preV = 0;
     _isSourceEliminated = false;
     if (_movableObj == null)
     {
         _movableObj = ObjectsPool.GetInstance().GetPoolClassAtPool <MovableObject>();
     }
 }
Beispiel #9
0
 public static BulletsManager GetInstance()
 {
     if (_instance == null)
     {
         _instance = new BulletsManager();
     }
     return(_instance);
 }
Beispiel #10
0
 public void Init(string playerName, int teamNumber, Image healthBar, BulletsManager bulletsManager, Color color)
 {
     this.playerName = playerName;
     this.teamNumber = teamNumber;
     this.healthBar  = healthBar;
     weapon.Init(teamNumber, bulletsManager);
     this.GetComponent <SpriteRenderer>().color = color;
 }
Beispiel #11
0
    // Use this for initialization
    void Start()
    {
        m_Damage    = 10;
        m_BM        = GetComponentInParent <BulletsManager>();
        m_TimeAlive = m_BM.m_BulletDuration;

        // m_Pos = new List<Vector3>();
    }
Beispiel #12
0
    public void Destroy()
    {
        //Add some effect
        GameObject.Instantiate <HitEffect>(hitEffectPrefab, transform.position, Quaternion.identity);
        BulletsManager.RemoveBullet(this);

        Destroy(this.gameObject);
    }
Beispiel #13
0
 // Use this for initialization
 void Start()
 {
     player      = GameObject.Find("Player").GetComponent <PlayerMovement>();
     gameManager = GameObject.Find("GameManager").GetComponent <GameManager>();
     bm          = GameObject.Find("Player").GetComponent <BulletsManager>();
     shooting    = GameObject.Find("Player").GetComponent <Shooting>();
     material    = new Material(_norimas);
 }
Beispiel #14
0
    //"Current Frame : {0}\n" +
    //"Current Frame : {0}\n" +
    //"Current Frame : {0}\n" +
    //"Current Frame : {0}\n" +
    //"Current Frame : {0}\n";
    private void UpdateDebugInfo()
    {
        string info = String.Format(DebugInfo,
                                    STGStageManager.GetInstance().GetFrameSinceStageStart(),
                                    BulletsManager.GetInstance().GetEnemyBulletsCount()
                                    );

        _debugInfoText.text = info;
    }
Beispiel #15
0
    public static int ClearEnemyBulletsInRange(ILuaState luaState)
    {
        float centerX = (float)luaState.ToNumber(-3);
        float centerY = (float)luaState.ToNumber(-2);
        float radius  = (float)luaState.ToNumber(-1);

        BulletsManager.GetInstance().ClearEnemyBulletsInRange(new Vector2(centerX, centerY), radius);
        return(0);
    }
 public override void Init()
 {
     base.Init();
     BulletsManager.GetInstance().RegisterPlayerBullet(this);
     _isCached = false;
     _isCachedCollisionSegments = false;
     _curLaserLen = 0;
     _isActive    = false;
 }
Beispiel #17
0
    // Use this for initialization
    void Start()
    {
        BulletsManager bulletManager = GameObject.FindObjectOfType <BulletsManager>();

        foreach (GameObject bulletObj in bulletManager.bullets)
        {
            Bullet bullet = bulletObj.GetComponent <Bullet>();
            bulletNames.Add(bullet.bulletName);
        }
    }
Beispiel #18
0
    void OnTriggerEnter2D(Collider2D other)
    {
        Bullet bullet = other.GetComponent <Bullet>();

        if (bullet != null)
        {
            BulletsManager.RemoveBullet(bullet);
        }

        Destroy(other.gameObject);
    }
Beispiel #19
0
 public void StartGame()
 {
     if (Synchronisator.Instance.gameType != GameType.Multiplayer)
     {
         playingGame = true;
         BulletsManager.StartGame();
         StartCoroutine(ShootLoop(false));
         StartCoroutine(ShootLoop(true));
     }
     else
     {
         photonView.RPC("MultStartGame", PhotonTargets.All);
     }
 }
Beispiel #20
0
 void Start()
 {
     bm      = GameObject.Find("Player").GetComponent <BulletsManager>();
     sp      = GameObject.Find("ShootingPlace");
     bullets = new List <GameObject>();
     audio   = GetComponent <AudioSource>();
     for (int i = 0; i < pooledAmount; i++)
     {
         GameObject obj = (GameObject)Instantiate(particle);
         obj.SetActive(false);
         bullets.Add(obj);
         SetBulletsType(1);
     }
 }
Beispiel #21
0
    public void Fire()
    {
        if (waitingTimeForCooldown >= 0)
        {
            return;
        }
        Bullet bullet = BulletsManager.GetBullet();

        bullet.transform.position = bulletSpawnPosition.position;
        bullet.transform.rotation = bulletSpawnPosition.rotation;
        bullet._rigidbody.AddForce(transform.forward * force);

        waitingTimeForCooldown = cooldown;
    }
    private void Awake()
    {
        if (Instance != null)
        {
            Destroy(this);
        }
        else
        {
            Instance = this;
        }

        foreach (Transform child in transform)
        {
            bullets.Add(child.gameObject);
        }
    }
    public override void SetStyleById(string id)
    {
        // 根据传入的id读取配置,重新生成数据
        EnemyBulletDefaultCfg cfg = BulletsManager.GetInstance().GetBulletDefaultCfgById(id);

        if (cfg == null)
        {
            Logger.LogError("Bullet ChangeStyle Fail! SysId  " + id + " is not exist!");
            return;
        }
        if (_bullet != null)
        {
            // 回收现有的prefab
            ObjectsPool.GetInstance().RestorePrefabToPool(_prefabName, _bullet);
        }
        _cfg        = cfg;
        _prefabName = _cfg.id;
        _bullet     = BulletsManager.GetInstance().CreateBulletGameObject(_type, _cfg.id);
        _trans      = _bullet.transform;
        _spRenderer = _trans.Find("BulletSprite").GetComponent <SpriteRenderer>();
        SetPosition(_curPos.x, _curPos.y);
        SetRotatedByVelocity(cfg.isRotatedByVAngle);
        SetSelfRotation(cfg.selfRotationAngle);
        GrazeDetectParas grazeParas = new GrazeDetectParas
        {
            type       = GrazeDetectType.Rect,
            halfWidth  = cfg.grazeHalfWidth,
            halfHeight = cfg.grazeHalfHeight,
        };

        _collisionHalfWidth  = cfg.collisionRadius * _scaleX;
        _collisionHalfHeight = cfg.collisionRadius * _scaleY;
        _collisionRadius     = cfg.collisionRadius * _scaleX;
        // 计算用于擦弹以及碰撞检测的两个数值
        // 擦弹
        float value = Global.PlayerGrazeRadius + _collisionRadius;

        _detGrazeValue = value * value;
        // 碰撞
        value             = Global.PlayerCollisionVec.z + _collisionRadius;
        _detCollisonValue = value * value;
        SetGrazeDetectParas(grazeParas);
        _aniFrameCount     = _cfg.aniFrameCount;
        _aniFrameInterval  = _cfg.aniFrameInterval;
        _curAniTimeCounter = 0;
        _curAniIndex       = 0;
    }
Beispiel #24
0
    /// <summary>
    /// 逻辑帧更新
    /// </summary>
    public static void Update()
    {
        if (Client.dataQueue.Count > 0)
        {
            var data = Client.dataQueue.Dequeue();
            if (data.Item1 != Client.FRAMPACKAGETYPE)
            {
                Debug.Log("fram package error");
                Client.ifrun = false;
                return;
            }

            var fp = Client.Deserialize <FramPackage>(data.Item2, 0, data.Item2.Length);
            for (int i = 0; i < fp.Opts.Count; i++)
            {
                var opt = fp.Opts[i];
                if (!obinfmp.ContainsKey(opt.Doplayername))
                {
                    LogicCreatPlayer(opt.Doplayername, opt.Id);
                    if (opt.Doplayername == Client.name)
                    {
                        UIManager.Init();
                    }
                }
                if (opt.Optype == Client.MOVETYPE)
                {
                    obinfmp[opt.Doplayername].ToMove(opt.Dir);
                    //ToMove(opt.Doplayername,opt.Dir);
                }
                else
                {
                    obinfmp[opt.Doplayername].ToUseSkill(opt.Skillid);
                    //ToPlaySkill(opt.Doplayername,opt.Skillid);
                }
            }

            //逻辑时间更新
            time += eachframtime;
        }

        foreach (var e in obinfmp)
        {
            e.Value.UpdateCreature();
        }
        BulletsManager.Update();
    }
 public override void SetStyleById(string id)
 {
     _cfg = BulletsManager.GetInstance().GetLinearLaserCfgById(id);
     if (_cfg == null)
     {
         Logger.LogError("LinearLaserCfg with id " + id + " is not exist!");
         return;
     }
     _prefabName = _cfg.id.ToString();
     _laserObj   = BulletsManager.GetInstance().CreateBulletGameObject(BulletType.Enemy_LinearLaser, _cfg.id);
     _objTrans   = _laserObj.transform;
     // 发射源
     _laserSourceTf = _objTrans.Find("Source");
     _laserSourceGo = _laserSourceTf.gameObject;
     // segment原型
     _laserSegmentProtoType = _objTrans.Find("Segment").gameObject;
 }
Beispiel #26
0
 public override void Init()
 {
     base.Init();
     _isMoving         = false;
     _isMovingStraight = false;
     _isMovingCurve    = false;
     _vx              = _vy = _dvx = _dvy = _curVelocity = _curAcce = 0;
     _curVAngle       = _curAccAngle = 0;
     _maxVelocity     = -1;
     _isInitVelocity  = false;
     _isMovingTo      = false;
     _isMovingTowards = false;
     ResetExtraSpeedParas();
     _reCalV      = true;
     _reCalVAngle = false;
     BulletsManager.GetInstance().RegisterEnemyBullet(this);
 }
 public override void ChangeStyleById(string id)
 {
     if (_bullet != null)
     {
         UIManager.GetInstance().HideGo(_bullet);
         ObjectsPool.GetInstance().RestorePrefabToPool(_bulletCfg.textureName, _bullet);
     }
     _bulletCfg           = BulletsManager.GetInstance().GetPlayerBulletCfgById(id);
     _prefabName          = id;
     _bullet              = BulletsManager.GetInstance().CreateBulletGameObject(BulletType.Player_Simple, id);
     _trans               = _bullet.transform;
     _renderer            = _trans.Find("BulletSprite").GetComponent <SpriteRenderer>();
     _trans.localPosition = _curPos;
     _isRotatedByVAngle   = _bulletCfg.isRotatedByVAngle;
     _selfRotationAngle   = _bulletCfg.selfRotationAngle;
     // 碰撞相关参数
     _collisionRadius = _bulletCfg.collisionRadius;
 }
Beispiel #28
0
    void LateUpdate()
    {
        List <Bullet> enemyBullets = BulletsManager.GetEnemyBullets(this);

        float vertical   = GetVerticalMovement(enemyBullets);
        float horizontal = GetHorizontalMovement(enemyBullets);

        if (revert)
        {
            horizontal = -horizontal;
        }

        Vector2 moving = Vector2.Lerp(oldMoving, new Vector2(horizontal, vertical), Time.deltaTime * accelerationSpeed);

        oldMoving = moving;

        Move(moving);
    }
Beispiel #29
0
    public void Init(Vector2 speed, Material material, ShipController owner)
    {
        this.speed = speed;
        this.owner = owner;
        BulletsManager.AddBullet(this);
        bulletRigidbody.velocity = speed;

        if (meshRenderer != null)
        {
            meshRenderer.sharedMaterial = material;

            MeshRenderer[] childMeshes = GetComponentsInChildren <MeshRenderer>();
            foreach (MeshRenderer childMesh in childMeshes)
            {
                childMesh.sharedMaterial = material;
            }
        }
    }
Beispiel #30
0
 // Use this for initialization
 void Start()
 {
     shooter           = GetComponentInChildren <Shooter>();
     health            = GetComponent <Health>();
     eyesCamera        = GetComponentInChildren <Camera>();
     ipID              = Network.player.ipAddress.ToString();
     notifictaionLabel = Text.FindObjectOfType <NotificationLabel>();
     scoreBoard        = Text.FindObjectOfType <Score>();
     bulletsManager    = BulletsManager.FindObjectOfType <BulletsManager>();
     bulletsParent     = GameObject.Find("BulletsParent");
     if (!bulletsParent)
     {
         bulletsParent = new GameObject("BulletsParent");
     }
     //bodyColor = myColorManager.ChooseRandomColor();
     //gunColor = myColorManager.ChooseRandomColor();
     CmdChangeColor(ipID);
     //CmdChangeColor(ipID, bodyColor, gunColor);
 }