// Updates movement public void Move(List <Object> targets) { // Moving towards that target if (targets.Count > 0) { float angle = 0; float diff = CUtils.Distance(targets[0].position, this.position, out angle); Vector2 face = this.forward * speed * 30 * deltaTime; this.Translate(face); this.SetRotate(angle); } }
public void MoveAI(float deltaTime, Tank target, AmmoBox ammoBox) { if (tankObject != null && target != null) { if (!stopTank) { if (ammo <= 0) { ammo = 0; float angle = 0; currentTarget = new Vector2((ammoBox.collider.corners[0].x + ammoBox.collider.corners[2].x) / 2, (ammoBox.collider.corners[0].y + ammoBox.collider.corners[2].y) / 2); float diff = CUtils.Distance(ammoBox.position, tankObject.position, out angle); Vector2 face = tankObject.forward * tankSpeed * 30 * deltaTime; tankObject.Translate(face); tankObject.SetRotate(angle); } else { float angle = 0; currentTarget = new Vector2((target.collider.corners[0].x + target.collider.corners[2].x) / 2, (target.collider.corners[0].y + target.collider.corners[2].y) / 2); float diff = CUtils.Distance(target.position, tankObject.position, out angle); Vector2 face = tankObject.forward * tankSpeed * 30 * deltaTime; tankObject.Translate(face); tankObject.SetRotate(angle); } if (!CUtils.IsObjectInScreen(tankObject)) { if (position.y < 0 - tankScreenOffset) { tankObject.SetPosition(position.x, GetScreenHeight()); } if (position.y > GetScreenHeight()) { tankObject.SetPosition(position.x, 0 - tankScreenOffset); } if (position.x < 0 - tankScreenOffset) { tankObject.SetPosition(GetScreenWidth(), position.y); } if (position.x > GetScreenWidth()) { tankObject.SetPosition(0 - tankScreenOffset, position.y); } } } } }
public void SetUpAI(Tank me, Tank target) { if (me != null && target != null) { this.AddChild(bulletSprite); bulletSprite.Load(bulletImage); this.SetPosition(me.position); collider = new BoxCollider(this, bulletSprite); point = target.position - me.position; pointNormalized = Vector3.Normalize(point); float angle = 0; float diff = CUtils.Distance(point + me.position, me.position, out angle); this.SetRotate(angle + 90); collider.Draw(); } }
// Setups the bullet so it will be ready to use. public void SetUp(Tank tank) { if (tank != null) { this.AddChild(bulletSprite); bulletSprite.Load(bulletImage); this.SetPosition(tank.position); collider = new BoxCollider(this, bulletSprite); point = GetMousePosition() - tank.position; pointNormalized = Vector3.Normalize(point); float angle = 0; float diff = CUtils.Distance(point + tank.position, tank.position, out angle); this.SetRotate(angle + 90); collider.Draw(); } }
// This is used to move the tank public void Move(float deltaTime) { if (tankObject != null) { if (collider.IsOverlapping2(mousePoint)) { stopTank = true; } else { stopTank = false; } // Boolean used to stop the tank if (!stopTank && !collider.IsOverlapping2(mousePoint)) { float angle = 0; float diff = CUtils.Distance(GetMousePosition(), tankObject.position, out angle); Vector2 face = tankObject.forward * tankSpeed * 30 * deltaTime; tankObject.Translate(face); tankObject.SetRotate(angle); // Just checking to see if the tank is out of the screen and if it is It will come back on the a different part of the screen if (!CUtils.IsObjectInScreen(tankObject)) { if (position.y < 0 - tankScreenOffset) { tankObject.SetPosition(position.x, GetScreenHeight()); } if (position.y > GetScreenHeight()) { tankObject.SetPosition(position.x, 0 - tankScreenOffset); } if (position.x < 0 - tankScreenOffset) { tankObject.SetPosition(GetScreenWidth(), position.y); } if (position.x > GetScreenWidth()) { tankObject.SetPosition(0 - tankScreenOffset, position.y); } } } } }