public void ExitUnderground(UndergroundEntrance entrance) { movementType = MovementType.None; cam.cameraMode = CameraMode.Manual; float timeAscend = 1.0f; float timeExit = 0.5f; anim.SetBool("Climbing", true); anim.SetBool("ClimbingUp", true); Sequence seq = DOTween.Sequence(); seq.Append(transform.DOMove(entrance.transform.position, timeAscend)); seq.Append(transform.DOMove(entrance.exitPoint.position, timeExit)); seq.Insert(0, cam.transform.DOMove(this.cylinders.position + cam.abovegroundOffset, timeAscend)); seq.Insert(0, cam.transform.DORotate(cam.abovegroundRotation, timeAscend)); seq.Insert(0, transform.DORotate(Vector3.zero, timeAscend)); seq.Insert(0, transform.GetChild(0).DOScale(1.0f, timeAscend)); seq.InsertCallback(timeAscend, () => { anim.SetTrigger("ReturnedToGround"); }); seq.AppendCallback(() => { movementType = MovementType.Normal; cam.cameraMode = CameraMode.AboveGround; }); }
void EnterUnderground(UndergroundEntrance entrance) { movementType = MovementType.None; cam.cameraMode = CameraMode.Manual; WaypointScript waypoint = entrance.firstWaypoint; Transform pivot = waypoint.transform.parent; float timeEntrance = 0.2f; float timeWait = 0.0f; float timeDescend = 1.0f; Sequence seq = DOTween.Sequence(); seq.Append(transform.DOMove(entrance.transform.position, timeEntrance)); //seq.AppendInterval(timeWait); seq.Append(transform.DOMove(waypoint.transform.position, timeDescend)); Vector3 waypointPos = waypoint.transform.position; Vector3 pivotPoint = new Vector3(pivot.position.x, waypointPos.y, pivot.position.z); Vector3 radialVector = (waypointPos - pivotPoint).normalized; Vector3 camPoint = waypointPos + radialVector * cam.undergroundDistance; Quaternion camRotation = Quaternion.LookRotation(-radialVector); seq.Insert(timeEntrance + timeWait, cam.transform.DOMove(camPoint, timeDescend)); seq.Insert(timeEntrance + timeWait, cam.transform.DORotateQuaternion(camRotation, timeDescend)); seq.Insert(timeEntrance + timeWait, transform.DORotateQuaternion(camRotation, timeDescend)); seq.Insert(timeEntrance + timeWait, transform.GetChild(0).DOScale(this.insideScale, timeDescend)); seq.InsertCallback(timeEntrance + timeWait, () => { anim.SetBool("Walking", false); anim.SetBool("Climbing", true); anim.SetBool("ClimbingUp", false); anim.SetTrigger("BeginClimbing"); transform.localScale = new Vector3(waypoint.ropeOnLeft ? 1 : -1, 1, 1); }); seq.AppendCallback(() => { anim.SetBool("Climbing", false); movementType = MovementType.Cylinder; cam.pivot = pivot; cylinderMovement.pivot = pivot; cam.cameraMode = CameraMode.BelowGround; cylinderMovement.currentWaypoint = waypoint; }); }