2016-07-24 5 views
1

Я очень новичок в C# и кодировании в целом.Как я могу использовать поведение в Unity?

У меня есть сценарий с оружием, который имеет публичный int 50 (урон). Затем я получил еще один скрипт, который является вражеским здоровьем.

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

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

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

Weapon.cs:

using UnityEngine; 
using System.Collections; 

public class Weapon : MonoBehaviour { 

    static Animator anim; 
    public GameObject hitbox; 
    public int damage = 50; 
    private AudioSource MyAudioSource; 
    private AudioClip WeaponSound; 

    void Start() { 
     anim = GetComponentInParent<Animator>(); 
     MyAudioSource = GetComponent<AudioSource>(); 
     GetComponent<EnemyHealth>().TakeDamage(damage);     
    } 

    void Update() { 
     attack(); 
     block(); 
    } 

    public void attack() { 
     if (Input.GetButtonDown("Fire1")) { 
      GetComponent<EnemyHealth>().TakeDamage(damage); 
      anim.SetBool("IsAttacking", true); 
      hitbox.SetActive(true); 
      Debug.Log("hit"); 
      MyAudioSource.PlayOneShot(WeaponSound); 
     } 
     else { 
      anim.SetBool("IsAttacking", false); 
      hitbox.SetActive(false); 
     } 
    } 

    public void block() { 
     if (Input.GetButtonDown("Fire2")) { 
      anim.SetBool("IsBlocking", true); 
     } 
     else { 
      anim.SetBool("IsBlocking", false); 
     } 
    } 
} 

EnemyHealth.cs:

using UnityEngine; 
using System.Collections; 

public class EnemyHealth : MonoBehaviour { 

    public int maxHealth = 100; 
    private int currentHealth;   
    private Animator animator; 

    void Start() { 
     currentHealth = maxHealth; 
     animator = GetComponent<Animator>(); 
    } 

    public void OnTriggerEnter(Collider other) { 
     other.GetComponent<Weapon>().attack(); 
    } 

    public void TakeDamage(int _damage) { 
     currentHealth -= _damage; 
     animator.SetTrigger("IsHit"); 
     if(currentHealth <= 0) { 
      Die(); 
     } 
    } 

    void Die() { 
     animator.SetBool("Isdead", true); 
     Destroy(gameObject); 
    } 
} 
+2

показать нам, что у вас уже пытались – Mostafiz

+0

я даже не знаю, как использовать этот форум. Мне это плохо. Добавил код, который я думаю. – CSharpNoob

+1

Вы должны прочитать [Как спросить?] (Http://stackoverflow.com/help/how-to-ask) – dotctor

ответ

1

Если предположить, что они оба экземпляра в другом главном классе (то есть те, не isntatiate от другого) в C# вы просто используйте '.' оператор для доступа к общественным элементам, свойствам и функциям в классе

main() 
{ 
    EnemyHealth myehlth = new EnemyHealth(); 
    Weapon myweapn = new Weapon(); 
    myehlth.TakeDamage(myweapn.damage); 
} 

Здесь я использовал '.' чтобы получить доступ к общественному ущербу в вашем классе оружия, а затем использовать «.». opprator передать его общественности Функция TakeDamage в вашем классе здоровья

+0

Как я уже сказал, я очень новичок в кодировании, поэтому я понятия не имею, что вы имеете в виду. Они оба являются их собственным классом (отдельные скрипты), и нет другого класса и т. Д. – CSharpNoob

+0

Хорошо, мне нравится, что я сказал, что я супер-новичок, так что я сделал это просто: Weapon myweapon = new Weapon(); а затем поместить TakeDamage (myweapon.damage); И это сработало! – CSharpNoob

+0

Ну, три строки кода, которые я предоставил вам, будут работать с копией и вставлены. Я предположил, что вы написали код выше. Если вы не понимаете, как копировать и вставлять код, я бы порекомендовал учебник C# с простым примером «привет мир», потому что слишком сложно показать вам, как здесь создать проект. – noone392

0

Ответ был довольно прост! Благодаря noone392

main() 
 
{ 
 
    
 
    Weapon myweapn = new Weapon(); 
 
    TakeDamage(myweapn.damage); 
 
}

+0

Пожалуйста, не используйте фрагменты кода для 'C#'. Они используются для 'HTML',' CSS' и 'JavaScipt'. – ventiseis

Смежные вопросы