Ejemplo n.º 1
0
	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;
		});
	}
Ejemplo n.º 2
0
	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;
		});
	}