Quantcast
Channel: Questions in topic: "error message"
Viewing all articles
Browse latest Browse all 2891

Collision damage and Health Controller dont work

$
0
0
Hey everone, Im just a beginner with unity and programming. Here are the scripts which arn't working: HealthController: public float startHealth = 5; public int startLifePoints = 3; private float health = 5; private int lifePoints = 3; private Animator anim; private PlayerController playerController; private bool isDead = false; private bool isDamageable = true; // Use this for initialization void Start () { anim = GetComponent(); playerController = GetComponent(); //der levelindex muss dem spiel entsprechend angepasst werden, wenn es eine begrüssungsszene oder eun hauptmenue gibt. if (Application.loadedLevel == 0) { health = startHealth; lifePoints = startLifePoints; } health = PlayerPrefs.GetFloat("Health"); lifePoints = PlayerPrefs.GetInt("LifePoints"); } void ApplyDamage (float damage) { if (isDamageable) { health -= damage; health = Mathf.Max(0, health); if (!isDead) { if (health == 0) { isDead = true; Dying(); } else { if (isDamageable) { Damaging(); } } isDamageable = false; Invoke("ResetIsDamageable", 1); } } } void ResetIsDamageable() { isDamageable = true; } void Dying () { anim.SetBool("Dying", true); playerController.enabled = false; lifePoints --; if (lifePoints <= 0) { //start game Invoke("StartGame", 3); } else { // restart level Invoke("RestartLevel", 1); } } void StartGame() { Application.LoadLevel(0); } void RestartLevel() { health = startHealth; anim.SetBool("Dying", false); playerController.enabled = true; if (!playerController.lookingRight) { playerController.Flip(); } // level neu generieren und spieler zurück setzen } void Damaging () { anim.SetTrigger("Damage"); } void OnDestroy() { PlayerPrefs.SetFloat("Health", health); PlayerPrefs.SetInt("LifePoints", lifePoints); } CollisionDamage: public float damage = 1; void OnTriggerEnter2D(Collider2D other) { if (other.CompareTag("Player")) { other.SendMessage("ApplyDamage", damage); } } void OnTriggerStay2D(Collider2D other) { if (other.CompareTag("Player")) { other.SendMessage("ApplyDamage", damage); } } } The problem is, that the CollisionDamage-script cant use the ApplyDamage of the HealthController. this is the error message: SendMessage ApplyDamage has no receiver! UnityEngine.Component:SendMessage(String, Object) CollisionDamage:OnTriggerStay2D(Collider2D) (at Assets/Scripts/CollisionDamage.cs:20) (these scripts are from youtube (Hummelwalker) and it works in his tutorial... :( ) Thank you for your answer! :) <3

Viewing all articles
Browse latest Browse all 2891

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>