У меня небольшая проблема.
У меня есть 2 сценария:
- Это Враг (Враг)
- Это Пуля (пуля)
В чем сама проблема?
Нанося урон врагу, я не убиваю определенное количество жизней, и враг сразу же умирает от одного выстрела.Я не могу понять, почему он умирает от одного выстрела.Когда я нанесу ему урон, чтобы убить ... Пожалуйста, помогите.Извините за мой плохой английский.
Bullet - скрипт (используйте метод Damage (), HitTarget ()).У метода может быть проблема Damage () - я не знаю.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class bullet : MonoBehaviour {
private Transform target;
public GameObject impactEffect;
public float speed = 70f;
public int damage = 50;
public void Seek(Transform itarget)
{
target = itarget;
}
// Update is called once per frame
void Update () {
if (target == null)
{
Destroy(gameObject);
return;
}
Vector3 diraction = target.position - transform.position;
float distanceframe = speed *Time.deltaTime;
if(diraction.magnitude <= distanceframe)
{
HiTarget();
return;
}
transform.Translate(diraction.normalized * distanceframe, Space.World);
transform.LookAt(target);
}
void HiTarget()
{
GameObject effect = (GameObject)Instantiate(impactEffect, transform.position, transform.rotation);
Destroy(effect, 1f);
Damage(target);
// Destroy(gameObject);
}
void Damage(Transform enemy)
{
Enemy e = enemy.GetComponent<Enemy>();
if (e != null)
{
e.TakeDamage(damage);
}
//Destroy(enemy.gameObject);
}
}
Enemy - скрипт (используйте метод TakeDamage (), Die ())
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour {
public float speed = 10f;
private int health;
public int startHealth = 100;
private bool isDead = false;
private Transform target;
private int waveWayPointIndex = 0;
void Start()
{
health = startHealth;
target = Waypoints.waypoint[0];
}
public void TakeDamage(int amount)
{
health -= amount;
if (health <= 0 && !isDead)
{
Die();
}
}
void Die()
{
isDead = true;
Destroy(gameObject);
}
void Update()
{
Vector3 diraction = target.position - transform.position; //от одной
позиции мы поворачиваемся к другой
transform.Translate(diraction.normalized * speed *
Time.deltaTime,Space.World); // переводим со скоростью
if (Vector3.Distance(transform.position,target.position)<= 0.4f)
{
NextWayPoint();
}
}
void NextWayPoint()
{
if(waveWayPointIndex >= Waypoints.waypoint.Length - 1 )
{
EndPath();
return;
}
waveWayPointIndex++;
target = Waypoints.waypoint[waveWayPointIndex];
}
void EndPath()
{
PlayerStat.Lives--;
Destroy(gameObject);
}
}
Я более склонен к ошибке в скрипте Bullet ...