public override void LiveUpdate() { var lookAngle = Quaternion.LookRotation(aimAt - primaryWeapon.GetShootPointsCentre()); pitchTarget = lookAngle.eulerAngles.x; yawTarget = lookAngle.eulerAngles.y; fallSpeed += -9.81f * Time.deltaTime; controller.Move(velocity * Time.deltaTime); // Locomotion var speed = Mathf.Clamp(Mathf.Abs(move.z) + Mathf.Abs(move.x), 0f, 1f); var turnSpeed = 2f * speed; var strafeAngle = Mathf.Atan2(move.x, move.z) * Mathf.Rad2Deg; transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0f, yawTarget + strafeAngle, 0f), turnSpeed * Time.deltaTime); headAimYaw = Mathf.LerpAngle(headAimYaw, yawTarget - transform.eulerAngles.y, 5f * Time.deltaTime); var targetTurretPitch = Quaternion.LookRotation(aimAt - TurretTransform.position); turretAimAngle = Quaternion.Lerp(turretAimAngle, targetTurretPitch, 5f * Time.deltaTime); meshAnimator.SetFloat("Speed", speed); }
public override void LiveUpdate() { var lookAngle = Quaternion.LookRotation(aimAt - primaryWeapon.GetShootPointsCentre()); pitchTarget = Mathf.LerpAngle(pitchTarget, lookAngle.eulerAngles.x, 5f * Time.deltaTime); yawTarget = Mathf.LerpAngle(yawTarget, lookAngle.eulerAngles.y, 5f * Time.deltaTime); fallSpeed += -9.81f * Time.deltaTime; velocity = Vector3.up * fallSpeed; if (controller.isGrounded) { fallSpeed = 0f; } controller.Move(velocity * Time.deltaTime); transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0f, yawTarget, 0f), 25f * Time.deltaTime); // Locomotion meshAnimator.SetBool("IsAim", !isRunning); meshAnimator.SetFloat("Speed", move.z); meshAnimator.SetFloat("VerticalSpeed", move.z); meshAnimator.SetFloat("HorizontalSpeed", move.x); meshAnimator.SetBool("IsCrouched", isCrouching); if (isCrouching) { controller.height = 1.2f; controller.center = new Vector3(0, 0.6f, 0); } else { controller.height = 1.5f; controller.center = new Vector3(0, 0.85f, 0); } }
public override void LiveUpdate() { // steering facing direction var lookAngle = Quaternion.LookRotation(aimAt - primaryWeapon.GetShootPointsCentre()); yawTarget = Mathf.LerpAngle(yawTarget, lookAngle.eulerAngles.y, 5f * Time.deltaTime); transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0f, yawTarget, 0f), 25f * Time.deltaTime); Speed += acceleration * Time.deltaTime; transform.position += Speed * Vector3.down * Time.deltaTime; HeadsUpDisplay.Current.HideCrosshair(); var hitRay = new Ray(transform.position, Vector3.down); RaycastHit hit; if (Physics.Raycast(hitRay, out hit, 20f, LayerMask.GetMask("Player"))) { var inviisbleDestruct = hit.collider.GetComponentInParent <InvisibleDestruct>(); if (inviisbleDestruct != null) { Destroy(inviisbleDestruct.gameObject); } } if (Physics.Raycast(hitRay, out hit, Mathf.Abs(Speed * Time.deltaTime + 0.5f), LayerMask.GetMask("Terrain", "Player"))) { transform.position = hit.point; WorldSounds.PlayClipAt(transform.position, LandSounds[Random.Range(0, LandSounds.Count)]); Land(); Instantiate(LandEffectPrefab, transform.position, Quaternion.identity); TriggerSpawner.TriggerAndDestroy(VehiclePrefab, WeaponPrefab, 0.3f); Targeting.RemoveTargetable(Team.Good, GetComponent <Killable>()); Destroy(this); } }