void TestBoom() { //Если нужно тестить взрыв if (testBoom && !testBoomOk && piiTarget != null && boomTarget != null) { //Если здоровье больше нуля значит нужно инициализировать взрыв самому if (!testBoomOk) { testBoomOk = true; piiTarget.DeathTarget(); if (rendererObj != null) { rendererObj.active = false; } TimeDelNow = TimeDelMax; if (rigidbody != null) { rigidbody.velocity = new Vector3(0, 0, 0); rigidbody.constraints = RigidbodyConstraints.FreezeAll; } } else { TimeDelNow -= Time.deltaTime; if (TimeDelNow < 0) { Destroy(gameObject); } } } }
void TestMove() { //проверка угла наклона Vector3 naclon = gameObject.transform.rotation.eulerAngles; bool canMove = false; if ((naclon.x < 20 || naclon.x > 340) && (naclon.z < 20 || naclon.z > 340)) { canMove = true; } if (piiTarget != null && piiTarget.heath > 0 && canMove) { TestRotate(); TestSpeed(); TestRotateWheel(); } if (!canMove && piiTarget != null && piiTarget.heath > 0) { piiTarget.heath -= Time.deltaTime * 20; if (piiTarget.heath <= 0) { piiTarget.heath = 0; piiTarget.DeathTarget(); } } }
//Проверка на столкновения void TestRigidBody() { if (true) { Collider[] collider = null; //вытаскиваем колайдеры если их нет if (collider == null || collider.Length <= 0) { //collider = Physics.OverlapCapsule(gameObject.transform.position - gameObject.transform.localScale.y * transform.up/2, gameObject.transform.position + gameObject.transform.localScale.y * transform.up/2, capsuleCollider.radius * 2 * transform.localScale.x); collider = Physics.OverlapCapsule(gameObject.transform.position - gameObject.transform.localScale.y * transform.up / 2, gameObject.transform.position + gameObject.transform.localScale.y * transform.up / 2, 0.3f * 2 * transform.localScale.x); } //Если теперь колайдеры есть то проверяем их if (collider != null && collider.Length > 0) { //Перебираем все колайдеры for (int numColl = 0; numColl < collider.Length; numColl++) { //Пытаемся получить пи таргет из колайдера PiiTarget colliderPiiTarget = collider[numColl].GetComponent <PiiTarget>(); if (colliderPiiTarget != null) { //Проверяем что это не цунами? TsunamiPartWave tsunamiPartWave = colliderPiiTarget.GetComponent <TsunamiPartWave>(); if (tsunamiPartWave == null) { //Это не цунами тогда наносим урон без прибавления очков игроку, если цель еще жива if (colliderPiiTarget.heath > 0) { colliderPiiTarget.heath -= DamageTargets * Time.deltaTime; if (colliderPiiTarget.heath <= 0) { colliderPiiTarget.heath = 0; colliderPiiTarget.DeathTarget(); } } } //Проверяем обьект на ригид боди Rigidbody rigidbody = colliderPiiTarget.GetComponent <Rigidbody>(); if (rigidbody != null) { //Тестим на мочу PiiPrefab piiPrefab = colliderPiiTarget.GetComponent <PiiPrefab>(); if (piiPrefab == null) { rigidbody.velocity = rigidbody.velocity * Time.deltaTime * 4 + (transform.parent.up * 3 + transform.parent.forward * -1).normalized * SpeedTarget * Time.deltaTime; rigidbody.freezeRotation = false; } } } } } } }
private void OnTriggerEnter(Collider other) { PiiTarget target = other.GetComponent <PiiTarget>(); PiiTarget piiTarget = gameObject.GetComponentInParent <PiiTarget>(); if (target != null && piiTarget != null && piiTarget != target && target.heath > 0 && target.MinPresure < (piiTarget.MinPresure)) { //target.TrigerPii(Presure, faceController, piiController, score_Text_3D.gameObject); target.heath -= piiTarget.MinPresure * 500 * Time.deltaTime; if (target.heath <= 0) { target.DeathTarget(); } } }