Unity3d C# Collider?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Du kannst die Funktion OnTriggerEnter mit einem Parameter vom Typ Collider nur 1x pro Skript definieren.

Verwende einfach die ursprüngliche Funktion und frage dann innerhalb der Funktion ab um welches Objekt es sich handelt:

void OnTriggerEnter(Collider collider) {
  if (collider.gameObject.CompareTag("Gem")) {
    collider.gameObject.SetActive (false);
    count++;
    UpdateScoreText(); 
  } else if (collider.gameObject.CompareTag("Enemy")) {
    hp = hp - 10;
    UpdateHPText();
  }
}
16

Vielen Dank! Das hat funktioniert! :)
Du hast hiermit offiziell meinen Tag gerettet :D

3

Android-Studio Spieleentwicklung?

Hallo Leute, ich habe mal eine zentrale Frage. Ein wenig Vorwissen: Vor einigen Tagen sind die Jahresarbeiten an unserer Schule angekündigt worden, ich habe mich entschieden, mich für die App-Spiele-Entwicklung zu melden. Jetzt arbeite ich schon seit einer Woche mit Android-Studio und mir ist aufgefallen, dass es kaum Tutorials zu der Spieleentwicklung in Android-Studio gibt. Meine Frage lautet nun, soll ich weiter machen? oder soll ich eventuell mit Unity lieber anfangen. Mein Ziel ist es, am Ende des Jahres, ein gutes (hochwertiges) 2D-Spiel zu fertigen bzw. es auf den Playstore zu bringen. Mich würde es nicht stören, wenn ich quasi neu anfangen müsste, ich habe mir aber schon eine Menge Bücher zu dem Thema zugelegt.

  • Bitte um "Hilfe" :)
...zur Frage

Szenenwechsel Unity 3d?

Guten Abend zusammen :),

ich habe ein Problem mit dem Szenenwechsel bei Unity3D (Version 5.2.1f1).

Ich möchte ein 2D Jump 'n' Run-Spiel programmieren und der Szenenwechsel, also das Laden des nächsten Levels soll erfolgen, wenn mein Charackter in einen bestimmten Bereich hineintritt.

Also habe ich mir ein Objekt erstellt, diesem einen Collider verpasst und einen Haken bei der Checkbox "Is Trigger" gesetzt. Diesem Objekt habe ich folgendes Skript verpasst (JavaScript):

function OnCollisionEnter (player: Collision) { if(player.gameObject.tag == "Player") { Application.LoadLevel(4); }

}

Level 4 ist dabei das zu ladende Level.

Mein Problem ist jedoch nun, dass es nicht funktioniert, keine Sorge, mein Character hat den Tag Player und ebenfalls einen Collider, der Skriptname enthält keine Leerzeichen oder Umlaute, entdeckt jemand vielleicht sonst noch einen Fehler den ich gemacht habe ?

Vielen Dank für jede Antwort :)

...zur Frage

Unity 3d ( Ich kann auf Berge klettern die Steil sind)?

Hallo, ich Programmiere letzte Zeit an einem Game in Unity und mir ist aufgefallen das ich auf Bergen herum/sprinten/hüpfen was auch immer kann.

Fix?

...zur Frage

Unity3D ArgumentException: The Object you want to instantiate is null?

Hallo liebe Programmierfreunde da draußen. :)

Ich arbeite gerade an einem Ich-bin-ein-Ball-und-sammle-kleine-Würfel-ein-Spiel, bin aber noch ziemlicher Anfänger. Vor allem was das Coden angeht.

Ich möchte gerne, dass beim Einsammeln der Würfel ein Licht, also ein neues GameObject entsteht. Dafür habe ich dieses Script geschrieben:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CreateObject : MonoBehaviour
{
  public Transform Spawnpoint;

  public GameObject Prefab;

  private void Start()
  {
  }

  void OnTriggerEnter()
  {
    Instantiate(Prefab, Spawnpoint.position, Spawnpoint.rotation);
  }
}

Natürlich habe ich mehrere aufsammelbare Würfel im Level. Jeder von ihnen hat dieses Script und jeweils ein eigenes EmptyGameObject als SpawnPoint. Das Licht ist ein Prefab und alle Würfel nutzen dieses eine.

Ich habe also einen Original-Würfel erstellt, den dann per Copy & Paste vervielfacht, alle in der Welt verteilt und jeder Kopie einen eigenen SpawnPoint für sein Licht gegeben.

So, wenn ich jetzt aber das Spiel starte, werden bei allen Würfeln, außer dem ersten Original-Würfel, unendlich Klone des Licht-Prefabs erstellt, ohne, dass ich irgendetwas mache. Dabei bekam ich diese Fehlermeldung:

UnassignedReferenceException: The variable Spawnpoint of CreateObject has not been assigned.

Nach ein bisschen Recherche habe ich diese Zeile in void start hinzugefügt:

Prefab = GameObject.FindGameObjectWithTag("SpawnLight");

So, jetzt war diese Fehlermeldung weg, aber leider auch meine Lichter. Wenn ich jetzt einen Würfel aufsammle, bleibt es dunkel. Dafür bekomme ich eine nette Fehlermeldung, welche mich wissen lässt:

ArgumentException: The Object you want to instantiate is null.

Ich habe leider keine Ahnung, was ich machen muss, um meine netten, kleinen Lichter zurückzubekommen... 😟

Ich freue mich über Hilfe jeglicher Form und bin mir sicher, dass es irgendwo da draußen jemanden gibt, der mir den Weg zum Licht zeigen und ebnen kann.

Vielen Dank schon einmal

KomischerLappen 😃

...zur Frage

Was möchtest Du wissen?