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); } } } } }
// 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); } } } } }
// Updates if they exists. public void Update(float deltaTime) { for (int i = 0; i < objects.Count; i++) { if (!CUtils.IsObjectInScreen(objects[i])) { objects[i] = null; objects.Remove(objects[i]); } } foreach (Bullet obj in objects) { if (obj != null) { obj.Run(deltaTime); } else { objects.Remove(obj); } } }