private void UpdateMovement() { float rotation = (Input.GetAxis("Mouse X") + Input.GetAxis("Horizontal")) * speed * Time.deltaTime * 10; float translation = (Input.GetAxis("Mouse Y") + Input.GetAxis("Vertical")) * Time.deltaTime * 10; StickModel.RotateAround(target.position, target.forward, rotation); var nextTranslation = translation; if (totalTranslation + translation >= 0) { nextTranslation = totalTranslation * (-1); } else if (totalTranslation + translation <= maxTranslation) { nextTranslation = maxTranslation - totalTranslation; } totalTranslation += nextTranslation; StickModel.Translate(0, 0, nextTranslation); if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0)) { shootSpeed = totalTranslation * (-1) * 10; mode = StickModes.ShootAnimation; } }
private void Shoot() { var relativePosition = new Vector3(StickModel.position.x, target.transform.position.y, StickModel.position.z); var shootForce = (target.transform.position - relativePosition).normalized * (shootSpeed) * 50 * target.GetComponent <Rigidbody>().mass; StickModel.gameObject.SetActive(false); target.GetComponent <Rigidbody>().AddForce(shootForce); mode = StickModes.Shooted; }
private void AnimateShoot() { float translation = speed * Time.deltaTime; var nextTranslation = translation; if (totalTranslation + translation >= 0) { nextTranslation = totalTranslation * (-1); } totalTranslation += nextTranslation; StickModel.Translate(0, 0, nextTranslation); if (totalTranslation == 0f) { mode = StickModes.Shoot; } }
public void ShowStick() { transform.position = target.transform.position; StickModel.gameObject.SetActive(true); mode = StickModes.Configuration; }