コード例 #1
0
ファイル: PlayerController.cs プロジェクト: MattW97/CSMWProj
    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
    }
コード例 #2
0
    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;
                        }
                    }
                }
            }
        }
    }