Jump to content
Unity Insider Forum

Objekt per linksklick erstellen


Roknix

Recommended Posts

Hallo :)

 

ich bin ganz neu auf Unity 3D gestoßen. Vor Jahren habe ich mich mit VB beschäftigt und wollte nun wieder Anfangen. Eine solche Engine halte ich als guter Einstieg.

 

Habe mich hier für C# entschieden.

 

Jetzt folgende Sache. Ich habe mich natürlich schon stark ins kalte Wasser geworfen. Also wollte ich zunächst wie folgt anfangen:

 

Ein Objekt soll per Linksklick erstellt werden. Bin hier bereits auf Begriffe wie instantiate, prefab (Objekt bereits erstellt und belegt) und raycast gestoßen.

 

Leider finde ich nahezu alles auf JavaScript.

 

Ich denke man lernt am meisten wenn man viel sucht und probiert. Leider komme ich hier aber nicht weiter. Fühle mich daher als würde ich gerade "cheaten". Aber gibt es irgendwo Beispiele wie ich dies in c# umsetzen kann? Keine Musterlösung sondern beispiele.

 

Ich will den Lernfaktor ja nicht zerstören :)

 

Vielen Dank schon einmal.

 

Gruß

 

Roknix

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jo, das ist ein Problem. 90% aller Beispiele vür Unity sind in Javascript verfasst.

Das sollte dir aber keine Schwierigkeiten bereiten.

Ich selber komme auch von Basic/VisualBasic Schiene. Ich selber habe erst einmal mit JS angefangen weil ich da die Beispiele zu gefunden habe und bin jetzt bei c# angelangt.

Und ich muss sagen, beides ist wirklich sehr nah beieinander.

Function wird zu void, var wert:float=1.5; wird zu public float wert=0.5f; ,man muss dingens=new Vector3(x,y,z) schreiben und ein Yield kannste nicht einfach wie in javascript nutzen. Tja sonst ist eigentlich so gut wie alles gleich.

Klar gibt es noch einige Unterschiede, aber wenn du dich ein wenig in c# einfuchst, dann weisst du recht schnell, wie du es umschreiben musst.

 

Es bleibt dir überlassen, erst einmal mit js anzufangen um das Ganze in Unity zu verstehen und dann zu schwenken, oder gleich c# zu nutzen und es minimal schwerer zu haben, da im Netz nich soo viel zu finden ist. (die Hilfe von Unity gibt dir jedenfalls Beispiele in beiden Sprachen, musst sie nur extra anwählen)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für deine Antwort :)

 

Ich denke auch. Finde aber Warum über Umwege zu Ziel wenn man direkt dahin kann :) Klar Java machen viele Problem Java kann ich nicht ;)

 

Denke das einzige Problem ist, das mir der Syntax nicht vertraut ist und genau dass das Problem darstellt :)

 

Darum Suche ich hier nach Hilfe :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Java ungleich JavaScript!

 

Naja, wenn du JavaScript nicht lesen kannst, dann bringen dir die Beispiele natürlich nichts.

Dann musst du eben die Bedeutungen der Strukturen anlesen (was ist ein Raycats, wie nutze ich Instantiate usw.) und daraus selbst was basteln. Wenn das nicht klappt, hast du mit C# (oder Programmieren ansich) vermutlich noch nicht genug Erfahrung und solltest dir überlegen, zumindest vorläufig doch eher JS zu nutzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könnte natürlich sein. Problem ist, dass dies meine 1. Versuche im 3D Bereich sind. Ich habe daher nur Minimal Erfahrung.

 

Sollte dann Vermutlich wirklich mit JS anfangen.. Kann man eigentlich auch JS und C# Scripte mischen(Also natürlich nicht Scriptintern)?

 

Was ist eigentlich der wichtige Unterschied zwischen JS und C#? Denke die Geschwindigkeit bzw. Speicherintensität?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, die kann man mischen.

Unterschiede gibt es nur syntaktisch, und JS hat ein, zwei Features nicht, die C# hat (die braucht man aber wirklich nicht unbedingt...).

Sind aber beide gleich schnell und gleich leistungsfähig, da beide Scriptsorten am Ende ins selbe Ergebnis compiled werden.

Es ist also wirklich wurscht, was man nimmt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

 

so bin nun etwas weiter :D immerhin bekomme ich keine Fehlermeldung mehr. Bin bei C# geblieben da ich irgendwie einen Geistesblitz hatte und dann recht hartnäckig sein kann. Leider erkennt das Programm beim Testdurchlauf keine Taste (ob Maus oder Tastatur). Ich denke ich mache im Script etwas falsch.

 

Zur Erklärung. Es sind nur ein Empty Gameobjekt ein Cube und die Maincamera vorhanden. Script usw wurde auch mit eingebunden.

 

 

Hier mein Code:

 

using UnityEngine;
using System.Collections;
public class cb : MonoBehaviour {
public Transform prefab;

void Start() {

}

private void instant () {
 Instantiate(prefab, new Vector3(1, 2, 3), Quaternion.identity);
}

void update() {
 if (Input.GetMouseButtonDown(0)){
		instant ();
 }
}
}

 

Hat wer eine Idee wo der Fehler liegen könnte?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi habe wieder ein Problem. Versuche gerade das Objekt an der Stelle der Maus entstehen zu lassen und nicht an einem fix gesetzten Platz. Dies versuche ich über RayCast aber ich mache da etwas falsch. Da gar kein Objekt mehr hergestellt wird. Habe eine Plane im Hintergrund damit der Strahl worauf treffen kann. Leider bisher ohne Ergebnis.

 

Hat wer eine Idee?

 

Danke schon einmal

 

 

using UnityEngine;
using System.Collections;
public class cb : MonoBehaviour {
 //Hauptscript
public GameObject prefab; // Variable prefab definiert
public RaycastHit hit;
public Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // Raycast erstellen und auf Maus zuweisen


void Start() {

}
// Funktion fuer Objekt erstellen via instantiate über einen RayCast
private void Instant () {
 if (Physics.Raycast (ray, 500)) {
 Instantiate(prefab, new Vector3(hit.point.x, hit.point.y, -9), Quaternion.identity);
 }
}
// Erkennen des Mausklicks via Updatefunktion und einbinden der Funktion Instant
void Update() {
 if (Input.GetMouseButtonDown(0)){
  Instant ();
 }

   }

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zum Ersten: Du erstellst in der einen Zeile oben keinen Raycast, sondern einen Ray.

Zum Zweiten: ...und dieser bleibt die ganze Zeit so, wie er am Anfang eingestellt ist, von einem festen Punkt A zu einem festen Punkt B.

Du musst den Ray schon mit der jeweils aktuellen Kameraposition erstellen, wenn geklickt wird!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...