Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
public abstract class PowerUp : MonoBehaviour { public abstract void OnPickup(Player player); void OnTriggerEnter(Collider collider) { Player player = collider.GetComponent<Player>(); if (player != null) { OnPickup(player); Destroy(this.gameObject); } } } |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
public class HealthPowerup : PowerUp { public int healthValue; public override void OnPickup(Player player) { player.health += healthValue; } } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Jar« (14.02.2018, 11:11)
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
public static bool CheckCollision(Collision col, GameObject collidingGameObject) { return col.gameObject == collidingGameObject; } public static bool CheckCollision(Collider col, GameObject collidingGameObject) { return col.gameObject == collidingGameObject; } |
C#-Quelltext |
|
1 2 3 4 |
public static GameObject GetPlayerObject() { return GameObject.FindGameObjectWithTag(StringCollection.PLAYER); // StringCollection ist eine Sammlung von strings, damit diese nicht wild im Projekt rumfliegen } |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 |
private void OnTriggerEnter(Collider col) { if (Globals.CheckCollision(col, playerObject)) { healthController.ChangeHealth(healthToAdd); Destroy(gameObject); } } |
C#-Quelltext |
|
1 |
healthController.ChangeHealth(healthToAdd); |
C#-Quelltext |
|
1 2 3 4 5 6 7 |
public void ChangeHealth(float healthToAdd) { currentHealth = Mathf.Clamp(currentHealth + healthToAdd, 0, maxHealth); UpdateHealthBar(); // UI updaten if (currentHealth <= 0) Destroy(playerObject); } |
Zitat
(mal ohne Inspector, mit Inspector wäre natürlich 0.2 Nanosekunden performanter, aber man ist auch stärker auf Unity angewiesen)
Dieser Beitrag wurde bereits 12 mal editiert, zuletzt von »Tiles« (14.02.2018, 10:07)
Für alles andere, öffne ich dann meist aber erst mal eine neue Scene, und probiere etwas herum
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Tiles« (14.02.2018, 09:49)
Das ist imho auch ein schönes Beispiel wieso man für Unity nicht erst C# lernen sollte. Unity ist keine C# IDE. Das ist eine Game Engine. Die als Scriptsprache C# verwendet. Und Unity verwendet nur einen klitzekleinen Bruchteil von C#. Vieles lässt sich natürlich Eins zu Eins übernehmen. Aber vieles auch nicht. Weil es eben immer auch den Unity Weg gibt.
Werbeanzeige