y private void Attack() { float distance = Vector3.Distance(target.transform.position, transform.position); Vector3 dir = (target.transform.position - transform.position).normalized; float direction = Vector3.Dot(dir, transform.forward); if(distance < 2.5f) { if(direction > 0) { PlayerHealth eh = (PlayerHealth)target.GetComponent("PlayerHealth"); eh.AddjustCurrentHealth(-10); } } }
private void Attack() { target = GameObject.FindGameObjectWithTag("Player"); float distance = Vector3.Distance(target.transform.position, transform.position); Vector3 dir = (target.transform.position - transform.position).normalized; float direction = Vector3.Dot(dir, transform.forward); Debug.DrawLine(target.transform.position, transform.position, Color.blue); //Debug.Log ("Attack Distance: " +target.transform.position ); if (distance < 5f) { if (direction > 0) { PlayerHealth eh = (PlayerHealth)target.GetComponent("PlayerHealth"); eh.AddjustCurrentHealth(-5); } } }
private void Attack() { target = GameObject.Find("Player"); float distance = Vector3.Distance(target.transform.position, transform.position); Vector3 dir = (target.transform.position - transform.position).normalized; float direction = Vector3.Dot(dir, transform.forward); Debug.Log(distance + " " + direction); if (distance < 3.5f) { if (direction > 0) { PlayerHealth eh = (PlayerHealth)target.GetComponent("PlayerHealth"); //Debug.Log(eh.transform.position); eh.AddjustCurrentHealth(-10); //Debug.Log ("success" + gameObject.name); } } }
//атака Enemy private void Attack() { //вводим переменную distance и вычисляем расстояние между игроком //и его целью float distance = Vector3.Distance(target.transform.position, transform.position); //вычисляем единичный векор направления к цели Vector3 dir = (target.transform.position - transform.position).normalized; //вычисляем нахождение цели в поле зрения (значение 0 и отрицательное - сзади) //значение+впереди. Значение меняется от -1 до 1 float direction = Vector3.Dot(dir, transform.forward); //усли дистанция меньше максимальной, то можем нанести урон if (distance < 2 && direction > 0) { //У цели Enemy ищим компонет с именем EnemyHealth - скрипт PlayerHealth ah = (PlayerHealth)target.GetComponent("PlayerHealth"); //и используем его метод изменения состояния здоровья //(необходимо переписать AddjustCurrentHeath с учетом новых требований) ah.AddjustCurrentHealth(-10); } }