void GrabAndDrag() { #region Grabbing and Dragging // Left Bumper picks up player when held if (Input.GetAxisRaw(pickUp) > 0 && !pickUpMode && inRange && !ragdolling) { pickUpMode = true; draggingPlayer = true; } else if (Input.GetAxisRaw(pickUp) == 0 && pickUpMode) { draggingPlayer = false; pickUpScript.join = false; Destroy(pickUpScript.GetComponent <SpringJoint>()); pickUpMode = false; } // Current Setup for picking up player if (pickUpMode && inRange && !pickUpScript.join && ClosestPlayer.GetComponentInParent <PlayerController>().ragdolling) { pickUpScript.join = false; pickUpScript.CreateJoint(); } #endregion }
void Update() { if (LoadingScript.loadScreen.activeInHierarchy == false) { if (DelaySet) { if (Time.time >= TimePoint && ActiveMonster == gameObject) { NoRemainingMovement = true; } } DistanceFromCheckpoint = Vector3.Distance(gameObject.transform.position, CurrentCheckpoint); RemainingMovement = (MaxMovement + SavedMovement) - (DistanceFromCheckpoint + TotalDistanceTraveled + (AttackCost * AttacksMade)); // for checking if we see the players if (CameraScript.GameController != null) { if (CameraScript.GameController.ActiveMonster != null) { ActiveMonster = CameraScript.GameController.ActiveMonster; } } IsActiveMonster = gameObject == ActiveMonster; if (true) { if (HasSeenPlayerThisTurn || HasSeenPlayerLastTurn) { foreach (Renderer R in Renderers) { R.enabled = true; } HealthCanvas.SetActive(true); } if (!HasSeenPlayerThisTurn && !HasSeenPlayerLastTurn) { foreach (Renderer R in Renderers) { R.enabled = false; } HealthCanvas.SetActive(false); } if (!IsMonsterTurn) { if (HasSeenPlayerThisTurn == true) { PlayerToBeChecked = CameraScript.GameController.ActivePlayer; if (PlayerToBeChecked != null) { Physics.Raycast(gameObject.transform.position, (PlayerToBeChecked.transform.position - gameObject.transform.position), out Seen, 16.0f, CombinedMask); if (Seen.collider != null) { if (Seen.collider.gameObject.CompareTag("Player") == true) { HasSeenPlayerThisTurn = StartManagerScript.StartGame; LastSeenPlayer = Seen.collider.gameObject; ClosestPlayer = LastSeenPlayer; ClosestDistance = Vector3.Distance(gameObject.transform.position, ClosestPlayer.transform.position); } } } } } if (HasSeenPlayerThisTurn || HasSeenPlayerLastTurn) { if (IsMonsterTurn) { ActiveMonster = CameraScript.GameController.ActiveMonster; IsActiveMonster = gameObject == ActiveMonster; if (gameObject == ActiveMonster) { if (!DelaySet) { TimePoint = Time.time + TimeDelay; DelaySet = true; } if (AgentOn == false && NoRemainingMovement == false) { StartCoroutine(TurnOnOffNavigation(false)); AgentOn = true; } if (DistanceFromCheckpoint >= 1) { TotalDistanceTraveled += DistanceFromCheckpoint; CurrentCheckpoint = gameObject.transform.position; } DistanceFromCheckpoint = Vector3.Distance(CurrentCheckpoint, transform.position); if (RemainingMovement > 0f && !NoRemainingMovement) { if (ClosestPlayer != null) { if (Vector3.Distance(gameObject.transform.position, ClosestPlayer.transform.position) > Range + RangeOffset && gameObject.GetComponent <NavMeshAgent>()) { ClosestPlayer.GetComponent <UnityEngine.AI.NavMeshObstacle>().carving = false; if (gameObject.GetComponent <UnityEngine.AI.NavMeshAgent>().enabled) { gameObject.GetComponent <UnityEngine.AI.NavMeshAgent>().destination = ClosestPlayer.transform.position; if (gameObject.GetComponent <UnityEngine.AI.NavMeshAgent>().pathStatus != UnityEngine.AI.NavMeshPathStatus.PathComplete) { Debug.Log("I cannot Get there"); NoRemainingMovement = true; } gameObject.GetComponent <UnityEngine.AI.NavMeshAgent>().stoppingDistance = Range + (RangeOffset); } } else if (!HasStartedAttacking && Vector3.Distance(gameObject.transform.position, ClosestPlayer.transform.position) <= Range + RangeOffset) { if (gameObject.name == "Iron Golem(Clone)") { Debug.Log("Attacking " + ClosestPlayer.name); } RaycastHit Strucken; Physics.Raycast(ClosestPlayer.transform.position, gameObject.transform.position - ClosestPlayer.transform.position, out Strucken, Vector3.Distance(ClosestPlayer.transform.position, gameObject.transform.position), CombinedMask); if (Strucken.collider == null) { HasStartedAttacking = true; StartCoroutine(AttackTimer()); ClosestPlayer.GetComponent <UnityEngine.AI.NavMeshObstacle>().carving = true; } else { if (gameObject.GetComponent <NavMeshAgent>()) { gameObject.GetComponent <NavMeshAgent>().SetDestination(ClosestPlayer.transform.position); } } } } if (ClosestPlayer == null) { HasCheckedPlayerDistance = false; ChoosingTarget(); } } } if (RemainingMovement <= 0f || NoRemainingMovement) { if (AgentOn == true) { StartCoroutine(TurnOnOffNavigation(true)); AgentOn = false; Debug.Log("Out of Movement"); } NoRemainingMovement = true; } } } } } }