public void BombShoot(float Dmg, string PlayerTeg, Vector2 vector, Vector2 PlayerPos) { EnemyBomb bomb = Instantiate(bulletPrefab) as EnemyBomb; bomb.transform.position = ShootPos.position; bomb.Damage = Dmg; bomb.TargetTag = PlayerTeg; bomb.PlayerPos = PlayerPos; // Vector2 dir = target.position - transform.position; float time = 70 * Time.fixedDeltaTime; Vector2 start = new Vector2(vector.x, vector.y) / time - 0.5f * Physics2D.gravity * time; // start.y *= -1; bomb.GetComponent <Rigidbody2D>().velocity = start; bomb.GetComponent <Rigidbody2D>().AddTorque(500); }
public void LoadContent(ContentManager content) { map = content.Load <TiledMap>("Level2"); mapRenderer = new TiledMapRenderer(GraphicsLocator.Graphics.GraphicsDevice); mapWidth = map.WidthInPixels; mapHeight = map.HeightInPixels; tileSize = new Vector2(16, 16); var tsx = (int)tileSize.X; var tsy = (int)tileSize.Y; var blockedLayer = map.GetLayer <TiledMapObjectLayer>("Block"); if (blockedLayer != null) { foreach (var tile in blockedLayer.Objects) { tileColliderBoxes.Add(new Rectangle((int)tile.Position.X * tsx, (int)tile.Position.Y * tsy, tsx, tsy)); } } var instancesLayer = map.GetLayer <TiledMapObjectLayer>("Instances"); if (instancesLayer != null) { foreach (var i in instancesLayer.Objects) { EnemyBehaviour enemyBehaviour = new EnemyEmptyBehaviour(); switch (i.Type) { // ITEM case "Antidote": StateLocator.State.AddObject(new Antidote((int)i.Position.X, (int)i.Position.Y)); break; case "Coin": StateLocator.State.AddObject(new Coin((int)i.Position.X, (int)i.Position.Y)); break; case "ItemMachinegun": StateLocator.State.AddObject(new ItemMachinegun((int)i.Position.X, (int)i.Position.Y)); break; case "ItemMisslegun": StateLocator.State.AddObject(new ItemMisslegun((int)i.Position.X, (int)i.Position.Y)); break; case "ItemShotgun": StateLocator.State.AddObject(new ItemShotgun((int)i.Position.X, (int)i.Position.Y)); break; // ENEMY case "EnemyBear": StateLocator.State.AddObject(new EnemyBird((int)i.Position.X, (int)i.Position.Y)); break; case "EnemyBird": StateLocator.State.AddObject(new EnemyBird((int)i.Position.X, (int)i.Position.Y)); break; case "EnemyBomb": enemyBehaviour = GetEnemyBehaviour(i); EnemyBomb enemy = new EnemyBomb((int)i.Position.X, (int)i.Position.Y, enemyBehaviour, GetEnemyRange(i), GetEnemyGoingDown(i)); enemyBehaviour.Setup(enemy, i); StateLocator.State.AddObject(enemy); break; case "EnemyDripper": StateLocator.State.AddObject(new EnemyDripper((int)i.Position.X, (int)i.Position.Y)); break; case "EnemyFox": StateLocator.State.AddObject(new EnemyFox((int)i.Position.X, (int)i.Position.Y)); break; case "EnemyFoxShock": StateLocator.State.AddObject(new EnemyFoxShock((int)i.Position.X, (int)i.Position.Y)); break; case "EnemyHelicopter": enemyBehaviour = GetEnemyBehaviour(i); EnemyHelicopter enemyHelicopter = new EnemyHelicopter((int)i.Position.X, (int)i.Position.Y, enemyBehaviour, GetEnemyRange(i), GetEnemyGoingDown(i)); enemyBehaviour.Setup(enemyHelicopter, i); StateLocator.State.AddObject(enemyHelicopter); break; case "EnemyHelicopterGun": enemyBehaviour = GetEnemyBehaviour(i); EnemyHelicopterGun enemyHelicopterGun = new EnemyHelicopterGun((int)i.Position.X, (int)i.Position.Y, enemyBehaviour, GetEnemyRange(i), GetEnemyGoingDown(i)); enemyBehaviour.Setup(enemyHelicopterGun, i); StateLocator.State.AddObject(enemyHelicopterGun); break; case "EnemyMeteor": StateLocator.State.AddObject(new EnemyMeteor((int)i.Position.X, (int)i.Position.Y, GetEnemyMeteorSize(i))); break; case "EnemyShell": StateLocator.State.AddObject(new EnemyShell((int)i.Position.X, (int)i.Position.Y)); break; case "EnemyShield": StateLocator.State.AddObject(new EnemyShield((int)i.Position.X, (int)i.Position.Y)); break; case "EnemySpace": StateLocator.State.AddObject(new EnemySpace((int)i.Position.X, (int)i.Position.Y)); break; case "EnemySpike": StateLocator.State.AddObject(new EnemySpike((int)i.Position.X, (int)i.Position.Y)); break; case "EnemyZeppelin": StateLocator.State.AddObject(new EnemyZeppelin((int)i.Position.X, (int)i.Position.Y)); break; // BOSS case "BossMeca": StateLocator.State.AddObject(new BossMeca((int)i.Position.X, (int)i.Position.Y)); break; case "BossCarrot": StateLocator.State.AddObject(new BossCarrot((int)i.Position.X, (int)i.Position.Y)); break; } } } }
void Update() { if (isWalking) { walkCounter -= Time.deltaTime; switch (walkDirection) { case 0: if (walkCounter > walkTime / 2) { myRigidBody.velocity = new Vector3(0, moveSpeed, 0); anim.SetFloat("MoveX", myRigidBody.velocity.x); anim.SetFloat("MoveY", myRigidBody.velocity.y); anim.SetBool("ImpMoving", isWalking); lastMove = new Vector2(myRigidBody.velocity.x, myRigidBody.velocity.y); } if (walkCounter < walkTime / 2) { myRigidBody.velocity = new Vector3(0, -moveSpeed, 0); anim.SetFloat("MoveX", myRigidBody.velocity.x); anim.SetFloat("MoveY", myRigidBody.velocity.y); anim.SetBool("ImpMoving", isWalking); lastMove = new Vector2(myRigidBody.velocity.x, myRigidBody.velocity.y); } break; case 1: if (walkCounter > walkTime / 2) { myRigidBody.velocity = new Vector3(moveSpeed, 0, 0); anim.SetFloat("MoveX", myRigidBody.velocity.x); anim.SetFloat("MoveY", myRigidBody.velocity.y); anim.SetBool("ImpMoving", isWalking); lastMove = new Vector2(myRigidBody.velocity.x, myRigidBody.velocity.y); } if (walkCounter < walkTime / 2) { myRigidBody.velocity = new Vector3(-moveSpeed, 0, 0); anim.SetFloat("MoveX", myRigidBody.velocity.x); anim.SetFloat("MoveY", myRigidBody.velocity.y); anim.SetBool("ImpMoving", isWalking); lastMove = new Vector2(myRigidBody.velocity.x, myRigidBody.velocity.y); } break; case 2: if (walkCounter > walkTime / 2) { myRigidBody.velocity = new Vector3(0, -moveSpeed, 0); anim.SetFloat("MoveX", myRigidBody.velocity.x); anim.SetFloat("MoveY", myRigidBody.velocity.y); anim.SetBool("ImpMoving", isWalking); lastMove = new Vector2(myRigidBody.velocity.x, myRigidBody.velocity.y); } if (walkCounter < walkTime / 2) { myRigidBody.velocity = new Vector3(0, moveSpeed, 0); anim.SetFloat("MoveX", myRigidBody.velocity.x); anim.SetFloat("MoveY", myRigidBody.velocity.y); anim.SetBool("ImpMoving", isWalking); lastMove = new Vector2(myRigidBody.velocity.x, myRigidBody.velocity.y); } break; case 3: if (walkCounter > walkTime / 2) { myRigidBody.velocity = new Vector3(-moveSpeed, 0, 0); anim.SetFloat("MoveX", myRigidBody.velocity.x); anim.SetFloat("MoveY", myRigidBody.velocity.y); anim.SetBool("ImpMoving", isWalking); lastMove = new Vector2(myRigidBody.velocity.x, myRigidBody.velocity.y); } if (walkCounter < walkTime / 2) { myRigidBody.velocity = new Vector3(moveSpeed, 0, 0); anim.SetFloat("MoveX", myRigidBody.velocity.x); anim.SetFloat("MoveY", myRigidBody.velocity.y); anim.SetBool("ImpMoving", isWalking); lastMove = new Vector2(myRigidBody.velocity.x, myRigidBody.velocity.y); } break; } if (walkCounter < 0) { EnemyBomb clone = Instantiate(bomb, new Vector3(myRigidBody.position.x, myRigidBody.position.y, 0), Quaternion.identity); isWalking = false; waitCounter = waitTime; anim.SetBool("ImpMoving", isWalking); anim.SetFloat("LastMoveX", lastMove.x); anim.SetFloat("LastMoveY", lastMove.y); } } else { waitCounter -= Time.deltaTime; myRigidBody.velocity = Vector2.zero; if (waitCounter < 0) { ChooseDirection(); } } }