Untiy Health System - PullRequest
       11

Untiy Health System

0 голосов
/ 07 апреля 2020
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveProjectile : MonoBehaviour
{

    public Rigidbody2D projectile;

    public float moveSpeed = 10.0f;



    // Start is called before the first frame update
    void Start()
    {
        projectile =  this.gameObject.GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        projectile.velocity = new Vector2(0,1) * moveSpeed;
    }

    void OnCollisionEnter2D(Collision2D col){
        if(col.gameObject.name == "Enemy"){
            gameObject.name == "EnemyHeart5".SetActive(false);
        }
        if(col.gameObject.name == "Top"){
            DestroyObject (this.gameObject);
        }

    }
}

Это код моего снаряда игрока. При столкновении я пытался отнести его к игровому объекту, который я назвал playerheart, и он, похоже, не сработал так, как я хотел.

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

1 Ответ

0 голосов
/ 07 апреля 2020

Я предполагаю, что "EnemyHeart5" - это GameObject внутри Enemy как дочерний игровой объект. Правильно?

Проблема в том, что когда происходит столкновение, он распознает игровой объект «Враг» и не имеет доступа к «Врагу5» для его отключения. Я бы посоветовал вам добавить в сценарий простой сценарий EnemyManager, который управляет вашим игровым объектом, связанным со здоровьем и здоровьем врага (ie. EnemyHearts, который вы отображаете). Когда происходит столкновение, получите доступ к этому компоненту EnemyManager и измените значение здоровья.

void OnCollisionEnter2D(Collision2D col){
    if(col.gameObject.tag == "Enemy"){
        col.gameObject.GetComponent<EnemyManager>().health =-1;
    }

Теперь, в методе обновления EnemyManager вы проверяете значение здоровья и отключаете компонент EnemyHealth5.

Также используйте «тег» в столкновении вместо «имени». Имя будет создавать проблемы, когда у вас есть несколько врагов в игре. Убедитесь, что вы добавили тег во вражеский игровой объект, если вы его используете.

Надеюсь, это поможет, дайте мне знать, как это происходит.

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