Цель не разрушает и не вычитает 10 из своего здоровья - PullRequest
0 голосов
/ 11 июля 2020

Я программировал, когда я столкнулся с проблемой, когда здоровье врага не падало, не говоря уже о разрушении gameObject.

Вот код для обоих скриптов:

Скрипт 1

using UnityEngine;

public class target : MonoBehaviour
{
    public float health = 50f;

    public void takeDamage(float amount)
    {
        amount -= health;
        if(health <= 0)
        {
            Die();
        }
    }
    void Die()
    {
        Destroy(gameObject);
    }
}

скрипт 2

using System;
using System.Collections.Generic;
using UnityEngine;


public class Gun : MonoBehaviour
{

    public float damage = 10f;
    public float range = 100f;

    public Camera fpsCam;
    // Update is called once per frame
    void Update()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            Shoot();
        }
    }

    void Shoot()
    {
        RaycastHit hit;
        if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
        {
            Debug.Log(hit.transform.name);
            target target = hit.transform.GetComponent<target>();
            if (target != null)
            {
                target.takeDamage(damage);
            }
        }
    }
}

Предполагается, что целевой объект должен уничтожить объект, когда он достигнет 0 здоровья.

Пожалуйста, помогите мне

1 Ответ

0 голосов
/ 11 июля 2020

Вы перепутали ваши операнды.

Левый операнд - это тот, который назначен.

amount -= health;

Присваивает результат amount, а не health .

Поменять местами операнды:

health -= amount;

Присваивание всегда слева.

Все, что происходит в данный момент, - это то, что ваша пройденная сумма имеет здоровье вычитается из него и затем сбрасывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...