Jump to content
Unity Insider Forum

Coin gibt zu viele Score Punkte


Tanja

Recommended Posts

Hey =)

 

bin wieder mal auf ein Problem gestoßen was ich nicht selber gelöst bekomme, vielleicht

weiß ja hier im Forum jemand weiter.

 

Ich habe einen Coin Prefab der eine ganz normale animation hat die permanent abgespielt wird.

Wenn man hero drauf springt bekommt er 10 score punkte und der coin wird destroyed! Alles gut soweit.

 

Jetzt habe ich meinem Coin eine end animation gegeben, das bedeutet der hero springt drauf und der coin verändert sein scale und seine position. Klappt soweit auch ganz okay. Nur da der coin jetzt nicht direkt destroyed wird sondern noch eine weile da ist bekommt mein hero die ganze zeit wo er auf dem coin ist score punkte.

 

Ich verstehe die logik dahinter, da der coin noch nicht zerstört ist und der hero auf dem coin ist bekommt er punkte aber wie macht man das denn normalerweise? Das eine end animation des coins abgespielt wird er jedoch nicht die ganze zeit dadurch punkte bekommt nur einmalig?

 

Das hier ist mein code:

 

using UnityEngine;
using System.Collections;
public class PickupCoin : MonoBehaviour
{

Animator anim;
private bool fading;

public int scoreValue = 10;
// Use this for initialization
void Start()
{
	anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
}
void OnTriggerEnter2D(Collider2D other)
{
	ScoreManager.score += scoreValue;

	if (other.gameObject.CompareTag("Player"))
		faded();
	Destroy(gameObject,0.5f);
}
void faded()
{ anim.SetBool("fading", true); }
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Tanja,

 

es wird warscheinlich sehr häufig OnTriggerEnter2D ausgelöst. Die schnellste und vermutliche einfachste Lösung ist es den Collider von deinem Coin zu deaktivieren oder zu zerstören. Sobald bei der ersten Kollision die Punkte weitergegeben wurden, sollen dann keine weiteren Kollisionen mehr möglich sin.

 

collider.enabled = false;

Link zu diesem Kommentar
Auf anderen Seiten teilen

Setz einfach den trigger inaktiv ( .SetActiv(false) ).

Wichtig, nur den trigger (collider) ;)

 

Hey :)

 

danke für die antwort!

Aber es klappt nicht! Das einzige was dadurch passiert, ist das der timer dadurch nicht funktioniert.

 

void OnTriggerEnter2D(Collider2D other)
   {
    dontcollide();
    ScoreManager.score += scoreValue;

    if (other.gameObject.CompareTag("Player"))

    faded();

    Destroy(gameObject, 0.5f);

   }
   void faded()
   { anim.SetBool("fading", true); }
   void dontcollide()
   { gameObject.SetActive(false);  }
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi Tanja,

 

es wird warscheinlich sehr häufig OnTriggerEnter2D ausgelöst. Die schnellste und vermutliche einfachste Lösung ist es den Collider von deinem Coin zu deaktivieren oder zu zerstören. Sobald bei der ersten Kollision die Punkte weitergegeben wurden, sollen dann keine weiteren Kollisionen mehr möglich sin.

 

collider.enabled = false;

 

oder so

 

other.enabled = false;

 

Dadurch spielt alles verrückt.

 

Dir danke ich auch für deine Antwort, jedoch egal wo ich das in meinen script reinschreibe werden collider und enabled Rot unterstrichen.

 

Habe ich vielleicht etwas vergessen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du other.enabled deaktivierst, dann würdest du versuchen dem Spieler den Collider wegzunehmen.

 

Dann versuch es mit dieser Zeile mal:

 

gameObject.GetComponent<Collider2D>().enabled = false;

 

Bei deinem if-Statement musst du dann ggf. berücksichtigen noch { }-Klammern zu setzen, denn sonst wird nur die nächste Zeile vom if-Statement ausgeführt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn du other.enabled deaktivierst, dann würdest du versuchen dem Spieler den Collider wegzunehmen.

 

Dann versuch es mit dieser Zeile mal:

 

gameObject.GetComponent<Collider2D>().enabled = false;

 

Bei deinem if-Statement musst du dann ggf. berücksichtigen noch { }-Klammern zu setzen, denn sonst wird nur die nächste Zeile vom if-Statement ausgeführt.

 

Hey MarcoMeter =)

 

yippiee hihi :P

 

es hat geklappt! Genau als ich other.enabled deaktiviert habe ist mein hero durch den boden gefallen und sogar ganz verschwunden

glaube ich.

 

Aber jetzt klappt alles habe die klammern gesetzt dann deine zeile und es klappt! Ich danke dir ganz doll! ^_^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...