/// <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); }
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); } } } }
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 }
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); } } } }
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>(); } }
public static BulletsManager GetInstance() { if (_instance == null) { _instance = new BulletsManager(); } return(_instance); }
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; }
// Use this for initialization void Start() { m_Damage = 10; m_BM = GetComponentInParent <BulletsManager>(); m_TimeAlive = m_BM.m_BulletDuration; // m_Pos = new List<Vector3>(); }
public void Destroy() { //Add some effect GameObject.Instantiate <HitEffect>(hitEffectPrefab, transform.position, Quaternion.identity); BulletsManager.RemoveBullet(this); Destroy(this.gameObject); }
// 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); }
//"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; }
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; }
// 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); } }
void OnTriggerEnter2D(Collider2D other) { Bullet bullet = other.GetComponent <Bullet>(); if (bullet != null) { BulletsManager.RemoveBullet(bullet); } Destroy(other.gameObject); }
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); } }
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); } }
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; }
/// <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; }
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; }
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); }
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; } } }
// 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); }