private void Awake() { _charController = GetComponent <CharacterController>(); _audioSource = GetComponent <AudioSource>(); if (!_charController) { Debug.LogError("Failed to get character controller in TankMovement instance on " + gameObject.name.ToString() + ", creating one now."); _charController = gameObject.AddComponent <CharacterController>(); } if (!_audioSource) { Debug.LogError("Failed to get AudioSource in TankMovement instance on " + gameObject.name.ToString() + ", creating one now."); _audioSource = gameObject.AddComponent <AudioSource>(); } if (!boostSound) { Debug.LogWarning("No Boost Sound provided for TankMovement!"); } isBoosting = false; isMoving = false; tankSpeed = 2; rotationSpeed = 1; boostAmount = 4; _tankDir = TANK_DIR.NONE; OnTankBoostBegin += InvokeBoostSound; OnTankBoostEnd += EndBoostSound; }
void MoveTank(TANK_DIR dir) { switch (dir) { case TANK_DIR.FORWARD: _charController.SimpleMove(transform.forward * tankSpeed); _tankDir = TANK_DIR.FORWARD; break; case TANK_DIR.BACK: _charController.SimpleMove((transform.forward * -1) * tankSpeed); _tankDir = TANK_DIR.BACK; break; case TANK_DIR.ROTATE_LEFT: transform.Rotate(Vector3.down * rotationSpeed); _tankDir = TANK_DIR.ROTATE_LEFT; break; case TANK_DIR.ROTATE_RIGHT: transform.Rotate(Vector3.up * rotationSpeed); _tankDir = TANK_DIR.ROTATE_RIGHT; break; default: break; } }