Я хочу изменить переменную из экземпляров объектов (спрайт с прикрепленным скриптом) для каждого объекта независимо - PullRequest
0 голосов
/ 05 января 2019

Я создаю игру, и у меня есть мир, созданный с помощью Perlin-Noise. Я порождаю деревья в случайном «травяном» месте, а затем хочу иметь возможность дать дереву здоровье, чтобы его можно было рубить.

    else if(noise <= 0.43)//gras
   {

        int treeNumber = Random.Range(0,100);
        if(treeNumber <5)
        {
            GameObject makeTree = Instantiate(tree[0], pos, Quaternion.identity);
        }
   }

У меня есть дерево спрайтов с компонентом скрипта

public static int treesHealth;
// Start is called before the first frame update
void Start()
{
    treesHealth = 100;
}

У меня есть игрок со сценарием боя

public void DoDamage(int amount, int startTreeHealt)
{
    Vector3 origin = playerpos;
    int range = 1;
    RaycastHit2D[] hit = Physics2D.RaycastAll(origin,dir,range);//startpos, direction, range
    for(int i = 0; i < hit.Length; i++)
    {
        if(hit[i].transform.gameObject.layer == LayerMask.NameToLayer("nature"))
        {

            Vector3 hitpos = hit[i].transform.position;

            treeHealth.treesHealth = treeHealth.treesHealth - amount; 


            if(treeHealth.treesHealth < 1)
            {
                Destroy(hit[i].transform.gameObject);
                GameObject makeTrunks = Instantiate(treeTrunks, hitpos, Quaternion.identity);

            }

            return;

        }

    }

Поначалу кажется, что все работает хорошо, но есть 2 сценария, в которых все идет не так. когда я пару раз ударил по дереву (недостаточно, чтобы «порубить его») и пошел к другому дереву.

  1. Когда я иду к другому дереву, я выхожу за пределы экрана и создаются новые деревья.

    • Здоровье уже пораженных деревьев восстанавливается до 100
  2. Когда я иду к другому дереву, я не выхожу «за пределы экрана», и не создаются новые деревья

    • 2-е, и все другие деревья имеют то же здоровье, что и уже пораженное дерево

Я хочу быть в состоянии ударить деревья независимо. Деревья должны «помнить», сколько у них осталось здоровья.

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

Я надеюсь, что кто-то может помочь мне в правильном направлении, спасибо за ваше время и помощь.

...