Ich habe herumgegraben und versucht, die Antwort auf diese Frage zu finden, fand aber nichts. Ich versuche ein einfaches Clicker-Spiel zu entwickeln, bin aber gleich am Anfang steckengeblieben ... was nicht besonders gut ist. Was ich versuche, ist, nach einer Berührung dem Spieler Geld zu geben (momentan nur + 1 $ hinzuzufügen) und in einem Textobjekt zu spawnen, das "+ 1 $" sagt. Scheint, als ob das Objekt nicht erscheint. Ich habe auch eine "Animation" gemacht, von der ich nicht sicher bin, ob sie gut gemacht ist. Beide Klassen:Objekte, die nach der Berührung nicht instanziiert werden
public class TapTextMovement : MonoBehaviour {
private int frameCount = 0;
private float temp;
public int modifier = 0;
// Use this for initialization
void Start() {
}
// Update is called once per frame
void Update() {
if (frameCount < 40) {
temp = this.transform.position.y + 1F * modifier;
this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
} else if (frameCount < 50) {
temp = this.transform.position.y + 0.5F * modifier;
this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
} else if (frameCount < 55) {
temp = this.transform.position.y + 0.3F * modifier;
this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
} else if (frameCount < 60) {
temp = this.transform.position.y + 0.15F * modifier;
this.transform.position = new Vector3(this.transform.position.x, temp, this.transform.position.z);
} else {
Object.Destroy (this);
}
frameCount++;
}
}
Und:
public class MoneyTap : MonoBehaviour {
public GameObject money;
private Text moneyText;
public long moneyAmount = 0;
public GameObject tapText;
private Vector2 tempPos;
private Vector3 fullPos;
void Start() {
moneyText = money.GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
moneyText.text = moneyAmount + "$";
if (Input.touchCount > 0) {
if (Input.GetTouch (0).phase == TouchPhase.Began) {
tempPos = Input.GetTouch(0).position;
fullPos = new Vector3 (tempPos.x, tempPos.y, 0);
RaycastHit2D hitInfo = Physics2D.Raycast (Camera.main.ScreenToWorldPoint (Input.GetTouch(0).position), Vector2.zero);
if (hitInfo) {
moneyAmount++;;
Instantiate(tapText, fullPos, Quaternion.identity);
}
}
}
}
}
Ich bin ein bisschen neu zu Unity so jedes bisschen Hilfe würde geschätzt! Vielen Dank!
Nur ein Hinweis, erstellen Sie keine Animationen in ** Update **, da es die Leistung beeinträchtigt, wie diese Änderungen einmal pro Frame durchgeführt werden Render –
Gibt es eine Alternative? Warum nicht? Ich möchte die Position jedes Frames für ein oder zwei Sekunden ändern und dann löschen. In jedem Rahmen wird das Objekt von einer Unlust angezogen, warum sollte ich das jetzt wollen? –