private void OnTriggerEnter(Collider other) { if (!pView.IsMine) { return; } if (other.tag.Equals("item") && !dead && !gc.getQuestionMode()) { if (!other.GetComponent <Blaster>().getIsOwned()) { if (other.GetComponent <Blaster>().getBlasterType() == 4) { goldObj = other.GetComponent <Blaster>(); gc.upperLevelQuestion(); } else { if (pbc.getEmptySlots() != 0) { pbc.addBlaster(other.GetComponent <Blaster>()); } else { Physics.IgnoreCollision(GetComponent <Collider>(), other); } } } } if (other.tag.Equals("outOfBounds")) { outOfBounds = true; outOfBoundsTimer = Time.time + outOfBoundsTimerLength; outOfBoundsImage.gameObject.SetActive(true); } if (other.tag.Equals("itemSpawn")) { Physics.IgnoreCollision(GetComponent <Collider>(), other); } }
void Update() { if (!gameOver) { //used to interact with objects RaycastHit interact; //used to see if a player is in the crosshairs RaycastHit playerFinder; crossHairWorldPos = cam.ScreenToWorldPoint(crossHairScreenPos); if (Physics.Raycast(crossHairWorldPos, transform.TransformDirection(Vector3.forward), out interact, interactLength)) { if (interact.collider.tag.Equals("item")) { isInteracting = true; if (hasPlayer) { pc.foundObject(); if (Input.GetMouseButtonDown(0)) { Blaster blaster = interact.collider.gameObject.GetComponent <Blaster>(); if (!blaster.getIsOwned() && blaster.getBlasterType() != 4) { pbc.addBlaster(blaster); } } } //if for some reason a PC isn't connected else { Debug.Log("No player controller attached"); } } else { isInteracting = false; } } else { isInteracting = false; } // Does the ray intersect any objects excluding the player layer if (Physics.Raycast(crossHairWorldPos, transform.TransformDirection(Vector3.forward), out playerFinder, gunDist, layerMask)) { if (playerFinder.collider.tag.Equals("Player")) { if (playerFinder.collider.GetComponent <playerController>().checkIfRedTeam() != pc.checkIfRedTeam()) { foundPlayer = true; if (hasPlayer) { pc.foundPlayer(); } //In a perfect world, this line never runs else { Debug.Log("No player controller attached"); } } } else if (playerFinder.collider.tag.Equals("AI")) { if (playerFinder.collider.GetComponent <aiPlayerController>().checkIfRedTeam() != pc.checkIfRedTeam()) { foundPlayer = true; if (hasPlayer) { pc.foundPlayer(); } else { Debug.Log("No player controller attached"); } } } else { foundPlayer = false; } //Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * hit.distance, Color.yellow); //Debug.Log("Did Hit"); } else { foundPlayer = false; } if (!isInteracting && !foundPlayer) { if (hasPlayer) { if (pc.isCrossHairChanged()) { pc.foundNothing(); } } else { //Debug.Log("No player controller attached"); } } //Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 15, Color.yellow); if (gc == null) { // Debug.Log("Null gc"); gc = parent.GetComponentInChildren <GameController>(); if (gc == null) { //Debug.Log("Could not locate GameController"); } } else { if (!gc.getQuestionMode()) { if (axes == RotationAxes.MouseXAndY) { rotAverageY = 0f; rotAverageX = 0f; rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotationX += Input.GetAxis("Mouse X") * sensitivityX; //rotationX = ClampAngle(rotationX, minimumX, maximumX); rotationY = ClampAngle(rotationY, minimumY, maximumY); rotArrayY.Add(rotationY); rotArrayX.Add(rotationX); if (rotArrayY.Count >= frameCounter) { rotArrayY.RemoveAt(0); } if (rotArrayX.Count >= frameCounter) { rotArrayX.RemoveAt(0); } for (int j = 0; j < rotArrayY.Count; j++) { rotAverageY += rotArrayY[j]; } for (int i = 0; i < rotArrayX.Count; i++) { rotAverageX += rotArrayX[i]; } rotAverageY /= rotArrayY.Count; rotAverageX /= rotArrayX.Count; rotAverageY = ClampAngle(rotAverageY, minimumY, maximumY); //rotAverageX = ClampAngle(rotAverageX, minimumX, maximumX); Quaternion yQuaternion = Quaternion.AngleAxis(rotAverageY, Vector3.left); Quaternion xQuaternion = Quaternion.AngleAxis(rotAverageX, Vector3.up); //Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, Vector3.left); //Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up); transform.localRotation = originalRotation * yQuaternion; parent.transform.localRotation = originalRotation * xQuaternion; } else if (axes == RotationAxes.MouseX) { rotAverageX = 0f; rotationX += Input.GetAxis("Mouse X") * sensitivityX; rotArrayX.Add(rotationX); if (rotArrayX.Count >= frameCounter) { rotArrayX.RemoveAt(0); } for (int i = 0; i < rotArrayX.Count; i++) { rotAverageX += rotArrayX[i]; } rotAverageX /= rotArrayX.Count; //rotAverageX = ClampAngle(rotAverageX, minimumX, maximumX); Quaternion xQuaternion = Quaternion.AngleAxis(rotAverageX, Vector3.up); transform.localRotation = originalRotation * xQuaternion; } else { rotAverageY = 0f; rotationY += Input.GetAxis("Mouse Y") * sensitivityY; rotArrayY.Add(rotationY); if (rotArrayY.Count >= frameCounter) { rotArrayY.RemoveAt(0); } for (int j = 0; j < rotArrayY.Count; j++) { rotAverageY += rotArrayY[j]; } rotAverageY /= rotArrayY.Count; rotAverageY = ClampAngle(rotAverageY, minimumY, maximumY); Quaternion yQuaternion = Quaternion.AngleAxis(rotAverageY, Vector3.left); transform.localRotation = originalRotation * yQuaternion; } } } } }