public void FindTarget() { if (target) { RaycastHit hit; if (Physics.Raycast(AutoTurretPos.position, ((target.GetBody.position + Vector3.up) - AutoTurretPos.position).normalized, out hit, AutoTurretRange, AutoTurretSightMask)) { if (hit.transform != target) { target = null; } } else { target = null; } if (target && target.isDead) { target = null; } } if (target) { return; } Collider[] colliders = Physics.OverlapSphere(AutoTurretPos.position, AutoTurretRange, AutoTurretMask); foreach (var item in colliders) { RaycastHit hit; if (Physics.Raycast(AutoTurretPos.position, ((item.transform.position + Vector3.up) - AutoTurretPos.position).normalized, out hit, AutoTurretRange, AutoTurretSightMask)) { if (hit.collider == item) { HealthHandler handler = item.GetComponent <HealthHandler>(); if (!handler) { ColliderHit hitCollider = item.GetComponent <ColliderHit>(); if (hitCollider) { handler = hitCollider.healthScript; } } if (!handler) { continue; } if (handler.isDead) { continue; } target = handler; return; } } } }
// Use this for initialization void Start() { Collider[] rigidbodies = GetComponentsInChildren <Collider>(); foreach (var child in rigidbodies) { ColliderHit script = child.gameObject.AddComponent <ColliderHit>(); script.damageMultiplier = GetMultiplier(child.gameObject); script.minForceForRagdoll = GetMinForceForRagdoll(child.gameObject); script.healthScript = healthScript; script.forceMultToDamage = forceMultToDamage; script.owner = this; child.gameObject.tag = "Enemy"; colliders.Add(child.transform); } }
void OnTriggerEnter(Collider col) { str = ""; if (variable.Instance.isLoad == true) { if (col.gameObject.name != "river(Clone)") { pltMov = false; } if (col.tag == "nothing") { detectNothing = true; col.enabled = false; } //if (col.tag == "nothingFall") //{ // Debug.Break(); // dead = true; // dieBy = resoneDead.fall; //} if (col.gameObject.name == "pltPoison(Clone)") { if (variable.Instance.useMagic == false) { colliderHit = ColliderHit.poision; str = "poison"; panelMagic.SetActive(true); variable.Instance.isInjuerd = true; timeInjuredf = TimeToPoison; txtInjured.text = "Time Remainig healing"; deactiveChar(); posionChar.SetActive(true); Animator[] animPlayer = Player.GetComponentsInChildren <Animator>(); for (int i = 0; i < animPlayer.Length; i++) { animPlayer[i].SetBool("idle", false); } } } if (col.gameObject.name == "treasure(Clone)") { colliderHit = ColliderHit.treasure; str = "treasure"; preManner = manner; manner = -1; } else if (col.tag == "topBlade") { if (variable.Instance.useMagic == false) { colliderHit = ColliderHit.blade; str = "tigh mord"; manner = -1; } } else if (col.tag == "bodyBlade") { str = "stop"; manner = -1; } else if (col.tag == "pltStable" || col.tag == "tree") { colliderHit = ColliderHit.stable; preManner = manner; manner = -1; } else if (col.tag == "fireEarth") { if (variable.Instance.useMagic == false) { colliderHit = ColliderHit.fire; str = "fire"; burned = true; panelMagic.SetActive(true); variable.Instance.isInjuerd = true; timeInjuredf = TimeToBurn; txtInjured.text = "Time Remainig healing"; deactiveChar(); burnedChar.SetActive(true); Animator[] animPlayer = Player.GetComponentsInChildren <Animator>(); for (int i = 0; i < animPlayer.Length; i++) { animPlayer[i].SetBool("idle", false); } } } else if (col.gameObject.name == "PartiFire") { str = "fire particle mord"; } else if (col.gameObject.name == "pltFireOnOffUp(Clone)") { str = "fire particle mord"; } else if (col.gameObject.name == "pltFireOnOffR(Clone)") { str = "fire particle mord"; } else if (col.gameObject.name == "pltFireOnOffD(Clone)") { str = "fire particle mord"; } else if (col.gameObject.name == "pltFireOnOffL(Clone)") { str = "fire particle mord"; } else if (col.gameObject.name == "pltMoveable(Clone)") { pltMov = true; } else if (col.tag == "river" && pltMov == false) { colliderHit = ColliderHit.river; str = "river"; deactiveChar(); drownChar.SetActive(true); Animator[] animPlayer = Player.GetComponentsInChildren <Animator>(); for (int i = 0; i < animPlayer.Length; i++) { animPlayer[i].SetBool("idle", false); } if (burned == true) { burned = false; } else { str = "mordRiver"; } } else if (col.gameObject.name == "pltFall(Clone)") { } } }
// Update is called once per frame void Update() { if (variable.Instance.isLoad == true && dead == false) { //correctpos(); // scrStaticObj.posJigZ = this.transform.position.z; //if (isColide == true) { decix = Player.transform.position.x - (int)Player.transform.position.x; deciz = Player.transform.position.z - (int)Player.transform.position.z; if (detectNothing == false) { if ((Input.touchCount > 0)) { Touch touch = Input.GetTouch(0); if (touch.phase == TouchPhase.Began) { Ray touchRay = mainCamera.ScreenPointToRay(touch.position); RaycastHit[] hits = Physics.RaycastAll(touchRay); foreach (RaycastHit hit in hits) { if (hit.collider.gameObject == gameObject) { useMag(); } } beginDeltaPos = touch.position; } if (touch.phase == TouchPhase.Stationary) { } if (touch.phase == TouchPhase.Ended) { directMove(touch); } if (touch.phase == TouchPhase.Moved && oncePerTouch) { directMove(touch); } } else { { if (Input.GetKey(KeyCode.Z)) { useMag(); } if ((Input.GetKey(KeyCode.UpArrow)) || Input.GetKey(KeyCode.W)) //bala { Animator[] animPlayer = Player.GetComponentsInChildren <Animator>(); for (int i = 0; i < animPlayer.Length; i++) { animPlayer[i].SetBool("idle", false); } correctpos(); manner = 0; rotationJigooli.eulerAngles = new Vector3(GameObject.Find("jigooli").transform.eulerAngles.x, 0, Player.transform.eulerAngles.z); Player.transform.rotation = rotationJigooli; } else if ((Input.GetKey(KeyCode.RightArrow)) || Input.GetKey(KeyCode.D)) //rast { Animator[] animPlayer = Player.GetComponentsInChildren <Animator>(); for (int i = 0; i < animPlayer.Length; i++) { animPlayer[i].SetBool("idle", false); } correctpos(); manner = 1; rotationJigooli.eulerAngles = new Vector3(GameObject.Find("jigooli").transform.eulerAngles.x, 90, Player.transform.eulerAngles.z); Player.transform.rotation = rotationJigooli; } //chap else if ((Input.GetKey(KeyCode.LeftArrow)) || Input.GetKey(KeyCode.A)) { Animator[] animPlayer = Player.GetComponentsInChildren <Animator>(); for (int i = 0; i < animPlayer.Length; i++) { animPlayer[i].SetBool("idle", false); } correctpos(); manner = 3; rotationJigooli.eulerAngles = new Vector3(GameObject.Find("jigooli").transform.eulerAngles.x, 270, Player.transform.eulerAngles.z); Player.transform.rotation = rotationJigooli; } //paein else if ((Input.GetKey(KeyCode.DownArrow)) || Input.GetKey(KeyCode.S)) { Animator[] animPlayer = Player.GetComponentsInChildren <Animator>(); for (int i = 0; i < animPlayer.Length; i++) { animPlayer[i].SetBool("idle", false); } // Character.Instance.allowFollow = false; correctpos(); // Character.Instance.allowFollow = true; manner = 2; rotationJigooli.eulerAngles = new Vector3(GameObject.Find("jigooli").transform.eulerAngles.x, 180, Player.transform.eulerAngles.z); Player.transform.rotation = rotationJigooli; } posJigooli = Player.transform.position; } } } if (variable.Instance.isInjuerd) { // Debug.Break(); timeInjuredf -= 1 * Time.deltaTime; timeInjured = (int)timeInjuredf; timeInjuredTXT.text = timeInjured.ToString(); } if (stopPlayerOnPreTile == false) { switch (colliderHit) { case ColliderHit.blade: { break; } case ColliderHit.fire: { break; } case ColliderHit.poision: { break; } case ColliderHit.river: { break; } case ColliderHit.stable: { stopPlayerOnPreTile = true; break; } case ColliderHit.treasure: { stopPlayerOnPreTile = true; break; } } if (manner == 0)//bala { posJigooli.z += speed * Time.deltaTime; Player.transform.position = posJigooli; } else if (manner == 1)//rast { posJigooli.x += speed * Time.deltaTime; Player.transform.position = posJigooli; } else if (manner == 2)//paein { posJigooli.z -= speed * Time.deltaTime; Player.transform.position = posJigooli; } else if (manner == 3)//chap { posJigooli.x -= speed * Time.deltaTime; Player.transform.position = posJigooli; } } } if (manner == -1)//vayse { Animator[] animPlayer = Player.GetComponentsInChildren <Animator>(); for (int i = 0; i < animPlayer.Length; i++) { animPlayer[i].SetBool("idle", true); } correctpos(); } if (stopPlayerOnPreTile == true && manner != preManner && manner != -1) { //manner = -1; stopPlayerOnPreTile = false; colliderHit = ColliderHit.non; } //if (reveleNextTile.z + 0.5f < Player.transform.position.z) //{ // reveleNextTile.z++; // mapPositionIndexX++; // if (variable.Instance.tileName[mapPositionIndexX, mapPositionIndexY] == 'n') // { // dieBy = resoneDead.fall; // dead = true; // } //} //if (reveleNextTile.x + 0.5f < Player.transform.position.x) //{ // reveleNextTile.x++; // //Debug.Log(mapPositionIndexY); // if (mapPositionIndexY < 9) // mapPositionIndexY++; // else // { // dieBy = resoneDead.fall; // dead = true; // } // if (variable.Instance.tileName[mapPositionIndexX, mapPositionIndexY] == 'n') // { // dieBy = resoneDead.fall; // dead = true; // } //} //if (reveleNextTile.z - 0.5f > Player.transform.position.z) //{ // reveleNextTile.z--; // if (mapPositionIndexX - 1 >= 0) // mapPositionIndexX--; // else // { // dieBy = resoneDead.fall; // dead = true; // } // if (variable.Instance.tileName[mapPositionIndexX, mapPositionIndexY] == 'n') // { // dieBy = resoneDead.fall; // dead = true; // } //} //if (reveleNextTile.x - 0.5f > Player.transform.position.x) //{ // reveleNextTile.x--; // if (mapPositionIndexY - 1 >= 0) // mapPositionIndexY--; // else // { // dieBy = resoneDead.fall; // dead = true; // } // if (variable.Instance.tileName[mapPositionIndexX, mapPositionIndexY] == 'n') // { // dieBy = resoneDead.fall; // dead = true; // } //} switch (colliderHit) { case ColliderHit.blade: { dead = true; dieBy = resoneDead.blade; break; } case ColliderHit.fire: { if (timeInjured <= 0 || burned == false) //&& variable.Instance.isInjuerd) { variable.Instance.isInjuerd = false; panelMagic.SetActive(false); if (variable.Instance.useMagic == false) { // variable.Instance.die = true; str = "mordFired"; } else { str = "healP"; } } break; } case ColliderHit.poision: { if (timeInjured <= 0) //&& variable.Instance.isInjuerd) { variable.Instance.isInjuerd = false; panelMagic.SetActive(false); if (variable.Instance.useMagic == false) { // variable.Instance.die = true; str = "mordPoison"; } else { str = "healP"; } } break; } case ColliderHit.river: { break; } } if (variable.Instance.useMagic) { timeMagicf -= 1 * Time.deltaTime; timeMagic = (int)timeMagicf; timeMagicTXT.text = timeMagic.ToString(); if (timeMagic <= -1) { variable.Instance.useMagic = false; panelMagic.SetActive(false); magicGO.SetActive(false); useMagicOnce = true; } } } if (dead == true) { if (dieBy == resoneDead.fall) { tempcountwalk = tempcountwalk + speed * Time.deltaTime; if (tempcountwalk >= 0.5) { manner = -1; Player.GetComponent <Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation; Physics.gravity = new Vector3(0, -9.81f, 0f); Player.GetComponent <Rigidbody>().useGravity = true; } } else { burned = false; Application.LoadLevel(0); } } //magic //if (variable.Instance.useMagic && timeMagic <= -1) //{ // variable.Instance.useMagic = false; // panelMagic.SetActive(false); //} //reset if (GameObject.Find("jigooli").transform.position.y < -6) { //scrStaticObj.detectEmptyPlatform = false; burned = false; Application.LoadLevel(0); } }