public void ShowPropertiesOnSelf(BulletStats newProperties) { bulletStats = newProperties; if (bulletStats.type.Contains("Battery")) { bulletStats.direction = Vector2.zero; } for (int i = 1; i < bulletOverlays.Length; i++) { if (i.DropdownIndexToType() == bulletStats.type) { bulletOverlays[i].SetActive(true); } else { bulletOverlays[i].SetActive(false); } } if (bulletStats.type == "None" || bulletStats.direction == Vector2.zero) { directionArrow.SetActive(false); } else { directionArrow.SetActive(true); int angle = (bulletStats.direction.DirectionToDropdownIndex() - 1) * -45; directionArrow.transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward); } }
public void Start() { newPos = transform.position; transform.rotation = BulletStats.DirectionToRotation(bulletStats.direction); GameController.instance.songController.beat += Move; gridGenerator = GameController.instance.gridGenerator; }
void Start() { PlayerStats _playerStats = GetComponentInParent <PlayerStats>(); GameObject _bulletsContainer = GameObject.Find("BulletsContainer"); SignalRIdentity _signalRIdentity = GetComponentInParent <SignalRIdentity>(); for (int i = 0; i < _playerStats.Bullets.Length; i++) { int _size = 0; BulletStats _bulletStats = _playerStats.Bullets[i].GetComponent <BulletStats>(); if (_bulletStats.Patrons >= 10) { _size = 10; } else { _size = _bulletStats.Patrons; } Pool _poolObj = new Pool { Size = _size, Tag = _bulletStats.gameObject.name, Prefab = _bulletStats.gameObject }; Pools.Add(_poolObj); } PoolDictionary = new Dictionary <string, Queue <GameObject> >(); foreach (Pool _pool in Pools) { Queue <GameObject> _objectPool = new Queue <GameObject>(); for (int i = 0; i < _pool.Size; i++) { GameObject _obj = Instantiate(_pool.Prefab); _obj.SetActive(false); _objectPool.Enqueue(_obj); _obj.transform.SetParent(_bulletsContainer.transform); SignalRIdentity signalRIdentity = new SignalRIdentity { NetworkID = i, ParentID = _signalRIdentity.NetworkID, TeamID = _signalRIdentity.TeamID }; if (_signalRIdentity.IsAuthority) { signalRIdentity.IsAuthority = true; } } PoolDictionary.Add(_pool.Tag, _objectPool); } }
public void ApplyProperties(BulletStats newProperties) { if (editable) { levelGenerator.level.RemoveBulletFromCurrentFrame(this, bulletStats); ShowPropertiesOnSelf(newProperties); levelGenerator.level.AddBulletToCurrentFrame(this, newProperties); } }
void OnTriggerEnter(Collider other) { Debug.Log(gameObject + " Collide with " + other.name); if(other.CompareTag("Enemy")){ bulletstats = GetComponent<BulletStats>(); shipstats = other.collider.GetComponent<ShipStats>(); shipstats.decreaseHealth(bulletstats.getDamage() * (1 - (shipstats.getArmor() - bulletstats.getArmorPen()))); Destroy(gameObject); } }
public void ApplyProperties() { if (node != null && selectedType != "None") { BulletStats bulletStats = new BulletStats(selectedType, node.bulletStats.position, selectedDirection.DirectionStringToVector(), node.bulletStats.specialtyNumber); node.ApplyProperties(bulletStats); ShowProperties(); } }
public void ShowProperties() { gameObject.SetActive(true); if (node != null) { BulletStats bulletStats = node.bulletStats; positionText.text = "(" + bulletStats.position.x + ", " + bulletStats.position.y + ")"; for (int i = 0; i < typeButtons.Length; i++) { if (i == bulletStats.type.TypeToDropdownIndex() && bulletStats.type != "None") { typeButtons[i].color = Color.white * 0.9f; } else { typeButtons[i].color = Color.white; } } for (int i = 0; i < directionButtons.Length; i++) { if (i == bulletStats.direction.DirectionToDropdownIndex()) { directionButtons[i].color = Color.white * 0.9f; } else { directionButtons[i].color = Color.white; } } if (bulletStats.type == "Yellow" || bulletStats.type == "Orange" || bulletStats.type == "Purple") { specialtyNumberTitle.text = "Beats Before Change"; ShowSpecialtyNumber(); } else if (bulletStats.type == "Green") { specialtyNumberTitle.text = "Beats Before Die"; ShowSpecialtyNumber(); } else if (bulletStats.type == "Blue") { specialtyNumberTitle.text = "Beats Before Split"; ShowSpecialtyNumber(); } else { HideSpecialityNumber(); } } }
public void ClearProperties(bool updateFrame) { if (editable) { if (updateFrame) { levelGenerator.level.RemoveBulletFromCurrentFrame(this, bulletStats); } ShowPropertiesOnSelf(BulletStats.BlankBulletStats(bulletStats.position)); } }
public BulletStats(BulletStats bulletStats) { type = bulletStats.type; direction = bulletStats.direction; try { specialtyNumber = bulletStats.specialtyNumber; } catch { return; } }
private void Start() { _rigidbody2D = GetComponent <Rigidbody2D>(); _bulletStats = GetComponent <BulletStats>(); _signalRShooting = SignalRShooting.instance; _signalRIdentity = GetComponent <SignalRIdentity>(); speed = _bulletStats.BulletSpeed * 10; damage = _bulletStats.Damage; Invoke("BulletOff", _bulletStats.LifeTime); //выдается ошибка так, как поля еще не обозначены, а OnEnable запускается быстрее Start. //А сам OnEnable нужен потому, что Start работает лишь при 1ом включении _onPlay = true; }
private static Dictionary <Bullet, Bullet> firstAvailable = new Dictionary <Bullet, Bullet>(4); // dict<prefab, bullet> public static void SpawnBullet(BulletStats bulletstats, Vector3 pos, Vector2 dir) { Bullet prefab = bulletstats.prefab; if (!firstAvailable.ContainsKey(prefab)) { firstAvailable.Add(prefab, null); } if (firstAvailable[prefab] == null) { firstAvailable[prefab] = GameObject.Instantiate(prefab); firstAvailable[prefab].gameObject.SetActive(false); } firstAvailable[prefab].Init(bulletstats, pos, dir); firstAvailable[prefab] = firstAvailable[prefab].nextAvailable; }
public Node[] GenerateGrid(Vector2 size) { List <Node> nodes = new List <Node>(); if (size.x % 2 == 0) { size.x++; } if (size.y % 2 == 0) { size.y++; } xHalf = Mathf.FloorToInt(size.x / 2f); yHalf = Mathf.FloorToInt(size.y / 2f); for (int x = 0; x < size.x; x++) { for (int y = 0; y < size.y; y++) { Transform generatedNode = Instantiate(nodePrefab, GetPositionFromGrid(new Vector2(x, y)), Quaternion.identity).transform; generatedNode.parent = transform; generatedNode.GetComponent <Node>().bulletStats = BulletStats.BlankBulletStats(new Vector2(x, y)); nodes.Add(generatedNode.GetComponent <Node>()); if (x >= xHalf - 1 && x <= xHalf + 1 && y >= yHalf - 1 && y <= yHalf + 1 && size.x > 3 && size.y > 3) { generatedNode.GetComponent <SpriteRenderer>().color = Color.black; generatedNode.GetComponent <Node>().editable = false; } if ((x == 2 && y == 2) || (x == 10 && y == 2) || (x == 2 && y == 10) || (x == 10 && y == 10)) { batteryNodes.Add(generatedNode.GetComponent <Node>()); } } } Camera.main.orthographicSize = 0.635f * ((size.x > size.y) ? size.x : size.y); Camera.main.transform.position = new Vector3(0.1f * size.x + 2f, 0, -10f); return(nodes.ToArray()); }
public void Init(BulletStats stats, Vector3 pos, Vector2 dir) { _transform.parent = stats.parent; prefab = stats.prefab; damager.damage = stats.damage; speed = stats.speed; destroyOutScreen = stats.destroyOutScreen; _transform.position = pos; _transform.up = dir; direction = dir; gameObject.SetActive(true); _rigidbody.simulated = true; _rigidbody.velocity = direction * speed; if (stats.lifeTime > 0) { StartCoroutine(KillTime(stats.lifeTime)); } }
private void CreateBullet() { GameObject bullet = bulletFactory.CreateObject().gameObject; bullet.transform.position = transform.position; BulletStats bs = ScriptableObject.CreateInstance <BulletStats>(); bs.power = stats.power; bs.bounceEnemy = stats.enemyBounce; bs.bounceWall = stats.wallBounce; bullet.GetComponent <BulletController>().stats = bs; Vector2 direction = target.position - transform.position; direction = direction.normalized; bullet.SetActive(true); bullet.GetComponent <BulletController>().Collider2d.isTrigger = false; bullet.GetComponent <BulletController>().AddForce(direction * shootSpeed); }
public void SpawnLaser(BulletStats laserStats) { LaserTypeToGameObject laserType; if (laserStats.type.Contains("Warning")) { laserType = GetLaser(laserStats.type.Replace("Warning", "")); } else { laserType = GetLaser(laserStats.type); } int amountOfNodes = 0; if (laserStats.type == "GreenLaserWarning") { PlayerMovement playerMovement = FindObjectOfType <PlayerMovement>(); if (playerMovement.PlayerPositionOnGrid.x == 5) { if (playerMovement.PlayerPositionOnGrid.y <= 4) { laserStats.position = new Vector2(5, 4); laserStats.direction = Vector2.down; } else if (playerMovement.PlayerPositionOnGrid.y >= 8) { laserStats.position = new Vector2(5, 8); laserStats.direction = Vector2.up; } } else if (playerMovement.PlayerPositionOnGrid.x == 6) { if (playerMovement.PlayerPositionOnGrid.y <= 4) { laserStats.position = new Vector2(6, 4); laserStats.direction = Vector2.down; } else if (playerMovement.PlayerPositionOnGrid.y >= 8) { laserStats.position = new Vector2(6, 8); laserStats.direction = Vector2.up; } } else if (playerMovement.PlayerPositionOnGrid.x == 7) { if (playerMovement.PlayerPositionOnGrid.y <= 4) { laserStats.position = new Vector2(7, 4); laserStats.direction = Vector2.down; } else if (playerMovement.PlayerPositionOnGrid.y >= 8) { laserStats.position = new Vector2(7, 8); laserStats.direction = Vector2.up; } } else if (playerMovement.PlayerPositionOnGrid.y == 5) { if (playerMovement.PlayerPositionOnGrid.x <= 4) { laserStats.position = new Vector2(4, 5); laserStats.direction = Vector2.left; } else if (playerMovement.PlayerPositionOnGrid.x >= 8) { laserStats.position = new Vector2(8, 5); laserStats.direction = Vector2.right; } } else if (playerMovement.PlayerPositionOnGrid.y == 6) { if (playerMovement.PlayerPositionOnGrid.x <= 4) { laserStats.position = new Vector2(4, 6); laserStats.direction = Vector2.left; } else if (playerMovement.PlayerPositionOnGrid.x >= 8) { laserStats.position = new Vector2(8, 6); laserStats.direction = Vector2.right; } } else if (playerMovement.PlayerPositionOnGrid.y == 7) { if (playerMovement.PlayerPositionOnGrid.x <= 4) { laserStats.position = new Vector2(4, 7); laserStats.direction = Vector2.left; } else if (playerMovement.PlayerPositionOnGrid.x >= 8) { laserStats.position = new Vector2(8, 7); laserStats.direction = Vector2.right; } } else if (playerMovement.PlayerPositionOnGrid.x == playerMovement.PlayerPositionOnGrid.y) { if (playerMovement.PlayerPositionOnGrid.x <= 4) { laserStats.position = new Vector2(4, 4); laserStats.direction = Vector2.one * -1; } else if (playerMovement.PlayerPositionOnGrid.x >= 8) { laserStats.position = new Vector2(8, 8); laserStats.direction = Vector2.one; } } else if (playerMovement.PlayerPosition.x == -playerMovement.PlayerPosition.y) { if (playerMovement.PlayerPositionOnGrid.x <= 4) { laserStats.position = new Vector2(4, 8); laserStats.direction = new Vector2(-1, 1); } else if (playerMovement.PlayerPositionOnGrid.x >= 8) { laserStats.position = new Vector2(8, 4); laserStats.direction = new Vector2(1, -1); } } else { foreach (Line line in alternateGreenLaserLines) { if (PlayerOnLine(line)) { laserStats.position = line.origin; laserStats.direction = line.direction; } } } greenLaser = new BulletStats("GreenLaser", laserStats.position, laserStats.direction); } else if (laserStats.type == "GreenLaser") { if (greenLaser != null) { laserStats = greenLaser; greenLaser = null; } } if (laserStats.direction.x != 0 && laserStats.direction.y == 0) { if (laserStats.direction.x < 0) { int distFromHalf = (int)(GameController.instance.gridGenerator.xHalf - laserStats.position.x); amountOfNodes = (int)(GameController.instance.gridGenerator.size.x - (distFromHalf + GameController.instance.gridGenerator.xHalf)); } else { amountOfNodes = (int)(GameController.instance.gridGenerator.size.x - laserStats.position.x); } } else if (laserStats.direction.x == 0 && laserStats.direction.y != 0) { if (laserStats.direction.y < 0) { int distFromHalf = (int)(GameController.instance.gridGenerator.yHalf - laserStats.position.y); amountOfNodes = (int)(GameController.instance.gridGenerator.size.y - (distFromHalf + GameController.instance.gridGenerator.yHalf)); } else { amountOfNodes = (int)(GameController.instance.gridGenerator.size.y - laserStats.position.y); } } else { GameObject previousSpawnedEdge = null; //Diagonal lasers for (int i = 0; i < 13; i++) { Vector2 position = (laserStats.direction * i) + laserStats.position; if (GetBatteryAtPosition(gridGenerator.GetPositionFromGrid(position)) != null || position.x < 0 || position.x >= 13 || position.y < 0 || position.y >= 13) { if (previousSpawnedEdge != null) { Destroy(previousSpawnedEdge); } return; } if (laserStats.type.Contains("Warning")) { Instantiate(laserType.warning, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + laserStats.position, LaserRotation(laserStats.direction)); } else { Transform spawnedLaser = Instantiate(laserType.diagonal, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + laserStats.position, LaserRotationDiagonal(laserStats.direction)).transform; previousSpawnedEdge = Instantiate(laserType.diagonalEdge, spawnedLaser); previousSpawnedEdge.transform.localPosition = Vector2.zero; Vector2 laserOriginDiagonal = laserStats.position; if (laserOriginDiagonal == new Vector2(5, 8) || laserOriginDiagonal == new Vector2(6, 8) || laserOriginDiagonal == new Vector2(7, 8)) { boss.up = true; } else if (laserOriginDiagonal == new Vector2(8, 5) || laserOriginDiagonal == new Vector2(8, 6) || laserOriginDiagonal == new Vector2(8, 7)) { boss.right = true; } else if (laserOriginDiagonal == new Vector2(5, 4) || laserOriginDiagonal == new Vector2(6, 4) || laserOriginDiagonal == new Vector2(7, 4)) { boss.down = true; } else if (laserOriginDiagonal == new Vector2(4, 5) || laserOriginDiagonal == new Vector2(4, 6) || laserOriginDiagonal == new Vector2(4, 7)) { boss.left = true; } } } return; } bool laserFromBoss = false; Vector2 laserOrigin = laserStats.position; GameObject previousLaser = null; if (laserOrigin == new Vector2(5, 8) || laserOrigin == new Vector2(6, 8) || laserOrigin == new Vector2(7, 8)) { boss.up = true; } else if (laserOrigin == new Vector2(8, 5) || laserOrigin == new Vector2(8, 6) || laserOrigin == new Vector2(8, 7)) { boss.right = true; } else if (laserOrigin == new Vector2(5, 4) || laserOrigin == new Vector2(6, 4) || laserOrigin == new Vector2(7, 4)) { boss.down = true; } else if (laserOrigin == new Vector2(4, 5) || laserOrigin == new Vector2(4, 6) || laserOrigin == new Vector2(4, 7)) { boss.left = true; } for (int i = 0; i < amountOfNodes; i++) { Vector2 currentPosition = (laserStats.direction * i) + laserStats.position; if (currentPosition == new Vector2(2, 2) || currentPosition == new Vector2(10, 2) || currentPosition == new Vector2(2, 10) || currentPosition == new Vector2(10, 10)) { if (!laserStats.type.Contains("Warning")) { Instantiate(laserType.oneBlockEnd, previousLaser.transform.position, LaserEndRotation(laserStats.direction)); Destroy(previousLaser); } break; } if (laserFromBoss && !laserStats.type.Contains("Warning")) { if (laserStats.type == "RedLaser" || laserStats.type == "OrangeLaser") { Instantiate(laserType.thickMiddle, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + laserStats.position, LaserRotation(laserStats.direction)); Vector2 position2 = Vector2.zero; Vector2 position3 = Vector2.zero; if (laserStats.direction == Vector2.up || laserStats.direction == Vector2.down) { position2 = new Vector2(laserStats.position.x + 1, laserStats.position.y); position3 = new Vector2(laserStats.position.x - 1, laserStats.position.y); } else if (laserStats.direction == Vector2.right || laserStats.direction == Vector2.left) { position2 = new Vector2(laserStats.position.x, laserStats.position.y + 1); position3 = new Vector2(laserStats.position.x, laserStats.position.y - 1); } Instantiate(laserType.thickRight, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + position2, LaserRotation(laserStats.direction)); Instantiate(laserType.thickLeft, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + position3, LaserRotation(laserStats.direction)); } else if (laserStats.type == "PurpleLaser") { Instantiate(laserType.thickMiddle, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + laserStats.position, LaserRotation(laserStats.direction)); Vector2 position2 = Vector2.zero; Vector2 position3 = Vector2.zero; Vector2 position4 = Vector2.zero; Vector2 position5 = Vector2.zero; if (laserStats.direction == Vector2.up || laserStats.direction == Vector2.down) { position2 = new Vector2(laserStats.position.x + 1, laserStats.position.y); position3 = new Vector2(laserStats.position.x + 2, laserStats.position.y); position4 = new Vector2(laserStats.position.x - 1, laserStats.position.y); position5 = new Vector2(laserStats.position.x - 2, laserStats.position.y); } else if (laserStats.direction == Vector2.right || laserStats.direction == Vector2.left) { position2 = new Vector2(laserStats.position.x, laserStats.position.y + 1); position3 = new Vector2(laserStats.position.x, laserStats.position.y + 2); position4 = new Vector2(laserStats.position.x, laserStats.position.y - 1); position5 = new Vector2(laserStats.position.x, laserStats.position.y - 2); } Instantiate(laserType.thickMiddle, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + position2, LaserRotation(laserStats.direction)); Instantiate(laserType.thickRight, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + position3, LaserRotation(laserStats.direction)); Instantiate(laserType.thickMiddle, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + position4, LaserRotation(laserStats.direction)); Instantiate(laserType.thickLeft, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + position5, LaserRotation(laserStats.direction)); } else { if (i == amountOfNodes - 1) { Instantiate(laserType.oneBlockEnd, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + laserStats.position, LaserEndRotation(laserStats.direction)); } else { previousLaser = Instantiate(laserType.oneBlock, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + laserStats.position, LaserRotation(laserStats.direction)); } } } else { if (laserStats.type.Contains("Warning")) { Instantiate(laserType.warning, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + laserStats.position, LaserRotation(laserStats.direction)); } else { if (i == amountOfNodes - 1) { Instantiate(laserType.oneBlockEnd, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + laserStats.position, LaserEndRotation(laserStats.direction)); } else { previousLaser = Instantiate(laserType.oneBlock, GameController.instance.gridGenerator.GetPositionFromGrid(laserStats.direction * i) + laserStats.position, LaserRotation(laserStats.direction)); } } } } if (laserOrigin == new Vector2(5, 8) || laserOrigin == new Vector2(6, 8) || laserOrigin == new Vector2(7, 8)) { boss.up = true; } else if (laserOrigin == new Vector2(8, 5) || laserOrigin == new Vector2(8, 6) || laserOrigin == new Vector2(8, 7)) { boss.right = true; } else if (laserOrigin == new Vector2(5, 4) || laserOrigin == new Vector2(6, 4) || laserOrigin == new Vector2(7, 4)) { boss.down = true; } else if (laserOrigin == new Vector2(4, 5) || laserOrigin == new Vector2(4, 6) || laserOrigin == new Vector2(4, 7)) { boss.left = true; } }
public void SetStats(BulletStats stats) { this.stats = stats; }
public void AddBulletToCurrentFrame(Node node, BulletStats bullet) { frames[LevelGenerator.instance.currentFrameIndex].nodes.Add(node); frames[LevelGenerator.instance.currentFrameIndex].bullets.Add(bullet); }
public void setData(BulletStats data) { damage = data.damage; Speed = data.speed; teamTag = data.teamTag; }
public void RemoveBulletFromCurrentFrame(Node node, BulletStats bullet) { frames[LevelGenerator.instance.currentFrameIndex].nodes.Remove(node); frames[LevelGenerator.instance.currentFrameIndex].bullets.Remove(bullet); }
public void SetPlayerBullet(BulletStats bulletStats) { PlayerAimAndShoot.ChoosedBullet = bulletStats; }