// Update is called once per frame void Update() { if (camera.GetComponentInParent <Rotate>().turning == true) { pX.SetActive(false); pY.SetActive(false); pZ.SetActive(false); } //raycast wall checks RaycastHit hit; if (Physics.Raycast(transform.position, -transform.right, out hit, 0.6f)) { //print("found object:" + hit.collider.gameObject.name); } if (gravityShift == false) { fallDirection = -camera.transform.up; //rayDistance = -rayDistance; } else { fallDirection = camera.transform.up; //rayDistance = -rayDistance; } Debug.DrawRay(transform.position, fallDirection * 20, Color.blue); //SIDEWAYS PLATFORM UTTERANCE if (currentPlatform.GetComponent <Perspective>().tilted == true && currentPlatform.GetComponent <Perspective>().tilted == true) { ScriptManager.instance.SidewaysPlatformUtterance(); } if (currentPlatform.GetComponent <MovingPlatform>() != null) { if (currentPlatform.GetComponent <MovingPlatform>().moving == false) { platformIsMoving = false; } else { platformIsMoving = true; } } else { platformIsMoving = false; } if (Input.GetKeyDown(KeyCode.Space) && (GM.instance.winScreen.activeSelf == false && GM.instance.gameOverScreen.activeSelf == false) && platformIsMoving == false) { //fallTo = Vector3.zero; //if (currentPlatform.GetComponent<MovingPlatform>() != null) /// { //changeOP = true; //} if ((Vector3.Dot(fallDirection, -transform.right) > 0.9f) && (Vector3.Dot(fallDirection, -transform.right) < 1.1f)) { //print("DOT PRODUCT IS THE SAME"); if (Physics.Raycast(transform.position, -transform.right, out hit, rayDistance, layermask)) { if (hit.collider.gameObject.tag == "Wall" || hit.collider.gameObject.tag == "death") { pX.SetActive(true); pY.SetActive(false); pZ.SetActive(false); if (currentPlatform.GetComponent <MovingPlatform>() != null) { //this if is new if (currentPlatform == hit.collider.GetComponentInParent <Perspective>()) { movingWall = hit.collider.gameObject; movingWallHit = true; movingWallOffset = new Vector3(moveOffset, 0, 0); } } //player.Parent = hit.collider.gameObject.GetComponent<Perspective>().transform; var v = hit.point; sparkPoint = v; if (hit.collider.gameObject.tag == "death") { v.x = v.x + moveOffset; fallTo = v; } else { var vv = hit.collider.transform.position; vv.x = vv.x + moveOffset; fallTo = vv; } if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; if (hit.collider.gameObject.tag == "Wall") { } //fallTo = v; wallHit = true; } else if (hit.collider.gameObject.tag == "Ground") { pX.SetActive(true); pY.SetActive(false); pZ.SetActive(false); var v = hit.point; var vv = hit.collider.gameObject.GetComponentInParent <Perspective>().transform.position; sparkPoint = v; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; v.x = v.x + moveOffset; vv.x = vv.x + moveOffset; fallTo = vv; wallHit = true; } } } else if ((Vector3.Dot(fallDirection, transform.right) > 0.9f) && (Vector3.Dot(fallDirection, transform.right) < 1.1f)) { //print(" NEW DOT PRODUCT IS THE SAME"); if (Physics.Raycast(transform.position, transform.right, out hit, rayDistance, layermask)) { if (hit.collider.gameObject.tag == "Wall" || hit.collider.gameObject.tag == "death") { pX.SetActive(true); pY.SetActive(false); pZ.SetActive(false); if (currentPlatform.GetComponent <MovingPlatform>() != null) { if (currentPlatform == hit.collider.GetComponentInParent <Perspective>()) { movingWall = hit.collider.gameObject; movingWallHit = true; movingWallOffset = new Vector3(-moveOffset, 0, 0); } } //player.Parent = hit.collider.gameObject.GetComponent<Perspective>().transform; var v = hit.point; sparkPoint = v; if (hit.collider.gameObject.tag == "death") { v.x = v.x - moveOffset; fallTo = v; } else { var vv = hit.collider.transform.position; vv.x = vv.x - moveOffset; fallTo = vv; } //var vv = hit.collider.gameObject.GetComponentInParent<Perspective>().transform.position; //v.x = v.x - moveOffset; //vv.x = vv.x - moveOffset; //fallTo = v; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; if (hit.collider.gameObject.tag == "Wall") { } wallHit = true; } else if (hit.collider.gameObject.tag == "Ground") { pX.SetActive(true); pY.SetActive(false); pZ.SetActive(false); var v = hit.point; sparkPoint = v; var vv = hit.collider.gameObject.GetComponentInParent <Perspective>().transform.position; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; v.x = v.x - moveOffset; vv.x = vv.x - moveOffset; fallTo = vv; wallHit = true; } } } else if ((Vector3.Dot(fallDirection, -transform.up) > 0.9f) && (Vector3.Dot(fallDirection, -transform.up) < 1.1f)) { //print(" NEW DOT PRODUCT IS THE SAME"); if (Physics.Raycast(transform.position, -transform.up, out hit, rayDistance, layermask)) { if (hit.collider.gameObject.tag == "Wall" || hit.collider.gameObject.tag == "death") { pX.SetActive(false); pY.SetActive(true); pZ.SetActive(false); if (currentPlatform.GetComponent <MovingPlatform>() != null) { if (currentPlatform == hit.collider.GetComponentInParent <Perspective>()) { movingWallHit = true; movingWall = hit.collider.gameObject; movingWallOffset = new Vector3(0, moveOffset, 0); } } //player.Parent = hit.collider.gameObject.GetComponent<Perspective>().transform; var v = hit.point; sparkPoint = v; if (hit.collider.gameObject.tag == "death") { v.y = v.y + moveOffset; fallTo = v; } else { var vv = hit.collider.transform.position; vv.y = vv.y + moveOffset; fallTo = vv; } //var vv = hit.collider.gameObject.GetComponentInParent<Perspective>().transform.position; // v.y = v.y + moveOffset; //vv.y = vv.y + moveOffset; //fallTo = v; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; if (hit.collider.gameObject.tag == "Wall") { } //fallTo = v; wallHit = true; } else if (hit.collider.gameObject.tag == "Ground") { pX.SetActive(false); pY.SetActive(true); pZ.SetActive(false); var v = hit.point; sparkPoint = v; var vv = hit.collider.gameObject.GetComponentInParent <Perspective>().transform.position; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; v.y = v.y + moveOffset; vv.y = vv.y + moveOffset; fallTo = vv; wallHit = true; } } } else if ((Vector3.Dot(fallDirection, transform.up) > 0.9f) && (Vector3.Dot(fallDirection, transform.up) < 1.1f)) { //print(" NEW DOT PRODUCT IS THE SAME"); if (Physics.Raycast(transform.position, transform.up, out hit, rayDistance, layermask)) { if (hit.collider.gameObject.tag == "Wall" || hit.collider.gameObject.tag == "death") { pX.SetActive(false); pY.SetActive(true); pZ.SetActive(false); if (currentPlatform.GetComponent <MovingPlatform>() != null) { if (currentPlatform == hit.collider.GetComponentInParent <Perspective>()) { movingWall = hit.collider.gameObject; movingWallHit = true; movingWallOffset = new Vector3(0, -moveOffset, 0); } } //player.Parent = hit.collider.gameObject.GetComponent<Perspective>().transform; var v = hit.point; sparkPoint = v; if (hit.collider.gameObject.tag == "death") { v.y = v.y - moveOffset; fallTo = v; } else { var vv = hit.collider.transform.position; vv.y = vv.y - moveOffset; fallTo = vv; } //var vv = hit.collider.gameObject.GetComponentInParent<Perspective>().transform.position; //v.y = v.y - moveOffset; //vv.y = vv.y - moveOffset; //fallTo = v; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; if (hit.collider.gameObject.tag == "Wall") { } wallHit = true; } else if (hit.collider.gameObject.tag == "Ground") { pX.SetActive(false); pY.SetActive(true); pZ.SetActive(false); var v = hit.point; sparkPoint = v; var vv = hit.collider.gameObject.GetComponentInParent <Perspective>().transform.position; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; v.y = v.y - moveOffset; vv.y = vv.y - moveOffset; fallTo = vv; //fallTo = v; wallHit = true; } } } else if ((Vector3.Dot(fallDirection, -transform.forward) > 0.9f) && (Vector3.Dot(fallDirection, -transform.forward) < 1.1f)) { //print(" NEW DOT PRODUCT IS THE SAME"); if (Physics.Raycast(transform.position, -transform.forward, out hit, rayDistance, layermask)) { if (hit.collider.gameObject.tag == "Wall" || hit.collider.gameObject.tag == "death") { pX.SetActive(false); pY.SetActive(false); pZ.SetActive(true); if (currentPlatform.GetComponent <MovingPlatform>() != null) { if (currentPlatform == hit.collider.GetComponentInParent <Perspective>()) { movingWall = hit.collider.gameObject; movingWallHit = true; movingWallOffset = new Vector3(0, 0, moveOffset); } } else { } //player.Parent = hit.collider.gameObject.GetComponent<Perspective>().transform; var v = hit.point; sparkPoint = v; if (hit.collider.gameObject.tag == "death") { v.z = v.z + moveOffset; fallTo = v; } else { var vv = hit.collider.transform.position; vv.z = vv.z + moveOffset; fallTo = vv; } //var vv = hit.collider.gameObject.GetComponentInParent<Perspective>().transform.position; //v.z = v.z + moveOffset; // vv.y = vv.z + moveOffset; //fallTo = v; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; if (hit.collider.gameObject.tag == "Wall") { } wallHit = true; } else if (hit.collider.gameObject.tag == "Ground") { pX.SetActive(false); pY.SetActive(false); pZ.SetActive(true); var v = hit.point; sparkPoint = v; var vv = hit.collider.gameObject.GetComponentInParent <Perspective>().transform.position; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; v.z = v.z + moveOffset; vv.y = vv.z + moveOffset; fallTo = vv; wallHit = true; } } } else if ((Vector3.Dot(fallDirection, transform.forward) > 0.9f) && (Vector3.Dot(fallDirection, transform.forward) < 1.1f)) { //print(" NEW DOT PRODUCT IS THE SAME"); if (Physics.Raycast(transform.position, transform.forward, out hit, rayDistance, layermask)) { if (hit.collider.gameObject.tag == "Wall" || hit.collider.gameObject.tag == "death") { pX.SetActive(false); pY.SetActive(false); pZ.SetActive(true); if (currentPlatform.GetComponent <MovingPlatform>() != null) { if (currentPlatform == hit.collider.GetComponentInParent <Perspective>()) { movingWall = hit.collider.gameObject; movingWallHit = true; movingWallOffset = new Vector3(0, 0, -moveOffset); } } else { } //player.Parent = hit.collider.gameObject.GetComponentInParent<Perspective>().transform; var v = hit.point; sparkPoint = v; if (hit.collider.gameObject.tag == "death") { v.z = v.z - moveOffset; fallTo = v; } else { var vv = hit.collider.transform.position; vv.z = vv.z - moveOffset; fallTo = vv; } //var vv = hit.collider.gameObject.GetComponentInParent<Perspective>().transform.position; // v.z = v.z - moveOffset; //vv.y = vv.z - moveOffset; //fallTo = v; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; if (hit.collider.gameObject.tag == "Wall") { } wallHit = true; } else if (hit.collider.gameObject.tag == "Ground") { pX.SetActive(false); pY.SetActive(false); pZ.SetActive(true); var v = hit.point; sparkPoint = v; var vv = hit.collider.gameObject.GetComponentInParent <Perspective>().transform.position; if (hit.transform.GetComponentInParent <Perspective>() != null) { sparkParent = hit.transform.GetComponentInParent <Perspective>().gameObject; } sparkCheck = hit.collider.gameObject; v.z = v.z - moveOffset; vv.y = vv.z - moveOffset; fallTo = vv; wallHit = true; } } } //THIS USED TO BE THERE && movingWallHit == false, makes player not die on boundry, but fixes landing on moving platforms if (wallHit == true && moving == false && camera.GetComponentInParent <Rotate>().turning == false) { if (hit.collider.tag == "death") { player.Parent = hit.collider.gameObject.transform; } else { player.Parent = hit.collider.gameObject.transform; //player.Parent = hit.collider.gameObject.GetComponentInParent<Perspective>().transform; } // if (movingWallHit == false) { StartCoroutine(Move(this.transform, fallTo, 0.5f)); } if (hit.collider.tag == "death") { if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Spikes")) { spikeDeath = true; } if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Boundry")) { boundryDeath = true; } if (hit.collider.gameObject.layer == LayerMask.NameToLayer("Wall")) { wallDeath = true; } killAfterFall = true; } } } if (movingWallHit == true && moving == false && camera.GetComponentInParent <Rotate>().turning == false) { //NEW!!! /* * if (hit.collider.tag == "death" && hit.collider != null) * { * killAfterFall = true; * } */ player.Parent = movingWall.transform; fallToMovingWall = movingWall.transform.position + movingWallOffset; i -= Time.deltaTime; if (i <= 0) { if (currentPlatform.GetComponent <MovingPlatform>() != null && currentPlatform.GetComponent <MovingPlatform>().moving == false) { wallHit = false; StartCoroutine(Move(this.transform, fallToMovingWall, 0.5f)); movingWallHit = false; i = 0.2f; } } } }
// Update is called once per frame void Update() { //Physics.gravity = (-camera.transform.up).normalized * 100f; Debug.DrawRay(camera.transform.position, -camera.transform.up * 10, Color.green); Debug.DrawRay(transform.position, transform.forward * 3, Color.green); Debug.DrawRay(transform.position, transform.up * 3, Color.blue); Debug.DrawRay(transform.position, transform.right * 0.6f, Color.red); if (Input.GetKeyDown(KeyCode.W)) { //rb.AddForce(camera.transform.up * 50f, ForceMode.Impulse); } if (Input.GetKeyDown(KeyCode.Space)) { test2OriginalPosition = this.transform.localPosition; if (currentPlatform.GetComponent <MovingPlatform> () != null) { //changeOP = false; } else { changeOP = true; } if (cameraRotate.turning == false) { //originalPosition = this.transform.localPosition; } if (gravityShift == false) { fallDirection = -camera.transform.up; Physics.gravity = (-camera.transform.up).normalized * 200f; } else { fallDirection = camera.transform.up; Physics.gravity = (camera.transform.up).normalized * 200f; } rb.isKinematic = false; if (contact == true) { GM.instance.GravitySound(); GM.instance.IncrementGravityShifts(); } contact = false; triggerCheck = null; enteringTrigger = false; gravityDisabled = !gravityDisabled; if (contact == false && gravityDisabled == true) { //fall off into oblivion //rb.freezeRotation = false; //rb.AddForce (Random.Range(1,2),Random.Range(1,2), Random.Range(1,2)); } } if (currentPlatform.GetComponent <MovingPlatform> () != null) { } else { changeOP = true; } }