// Start is called before the first frame update void Start() { GameEvents.current.onMovementManagerEnter += () => { isMovementManagerActive = true; }; GameEvents.current.onMovementManagerExit += () => { isMovementManagerActive = false; }; frisbeeObject = GameObject.FindGameObjectWithTag("Frisbee"); playerSelector = GameObject.Find("Players").GetComponent <PlayerSelector>(); throwSide = ThrowSide.RIGHT; AttachToPlayer(GameObject.Find("Player"), throwSide); }
private void SwitchThrowSide() { if (!isMovementManagerActive) { if (throwSide == ThrowSide.RIGHT) { throwSide = ThrowSide.LEFT; } else if (throwSide == ThrowSide.LEFT) { throwSide = ThrowSide.RIGHT; } AttachToPlayer(playerHoldingTheFrisbee, throwSide); } }
public static Vector3[] MakePath(ThrowSide side) { Vector3[] path = new Vector3[4]; switch (side) { case ThrowSide.BOTTOM: path[0] = MatchController.s_instance.RandomBottomPoint(); path[3] = MatchController.s_instance.RandomBottomPoint(); path[1] = new Vector3(Mathf.Lerp(path[0].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z); path[2] = new Vector3(Mathf.Lerp(path[1].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z); break; case ThrowSide.LEFT: path[0] = MatchController.s_instance.RandomLeftPoint(); path[3] = MatchController.s_instance.RandomBottomRightPoint(); path[1] = new Vector3(Mathf.Lerp(path[0].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z); path[2] = new Vector3(Mathf.Lerp(path[1].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z); break; case ThrowSide.RIGHT: path[0] = MatchController.s_instance.RandomRightPoint(); path[3] = MatchController.s_instance.RandomBottomLeftPoint(); path[1] = new Vector3(Mathf.Lerp(path[0].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z); path[2] = new Vector3(Mathf.Lerp(path[1].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[1].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z); break; case ThrowSide.TOP: path[0] = MatchController.s_instance.RandomTopPoint(); path[3] = MatchController.s_instance.RandomTopPoint(); path[1] = new Vector3(Mathf.Lerp(path[0].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[0].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z); path[2] = new Vector3(Mathf.Lerp(path[1].x, path[3].x, Random.value), MatchController.s_instance._panelCorners[0].y + 0.5f * (0.5f - Random.value) * (MatchController.s_instance._panelCorners[0].y - MatchController.s_instance._panelCorners[1].y), path[0].z); break; default: break; } return(path); }
/// Attaches the frisbee to another GameObject (= player). public void AttachToPlayer(GameObject player, ThrowSide throwSide) { DetachFromPlayer(); playerSelector.DeselectAllPlayers(); state = State.AT_PLAYER; playerHoldingTheFrisbee = player; playerHoldingTheFrisbee.GetComponent <PlayerMovement>().canMove = false; if (throwSide == ThrowSide.RIGHT) { transform.position = playerHoldingTheFrisbee.transform.position + Vector3.right; } else if (throwSide == ThrowSide.LEFT) { transform.position = playerHoldingTheFrisbee.transform.position + Vector3.left; } FixedJoint fixedJoint = frisbeeObject.AddComponent <FixedJoint>(); fixedJoint.connectedBody = playerHoldingTheFrisbee.GetComponent <Rigidbody>(); fixedJoint.breakForce = 250; }