Du bist nicht angemeldet.

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

11

13.02.2018, 08:52

Das ist ja korrekt, das versuche ich ja.

Aber: im Regen stehen zu bleiben, hilft mir dabei leider nicht weiter.
Besser wäre es, die Funktinsfehler die ich mache zu kapieren.
Ohne daraus nen riesen Lehrgang zu machen, das würde mir zum 1nem helfen das mein Heilcontainer funktioniert,
zum zweitem für das nächste Mal verdeutlichen, wo ich den Denkfehler habe.


( zum 3. wäre es echt lieb ^^ )
Vorsicht! Tante Gretel darf man nicht hänseln.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

13.02.2018, 08:54

Das hilft dir vielleicht für ein paar Stunden. Aber danach wirst du das nächste Problem haben, das du wieder nicht selber lösen kannst, weil dir die Grundlagen fehlen. Ich kann deshalb nur bei meiner Empfehlung bleiben, erst einmal vernünftig C# zu lernen. Wenn du C# könntest, wäre das alles viel einfacher.

13

13.02.2018, 08:57

Naja.

ich stehe da ziemlich am Anfang, das ist richtig.
Wenn ich meine Fehler aber nicht gezeigt kriege - und daran an sich nichts lerne (und das ist es ja grade z.B. bei Büchern, da schlägst Du 10 Seiten auf,
und anschließend hast Du 200 Fragen, die das Buch nirgendwo beantwortet, und stehst im Regen) - dann werde ich so nicht weiterkommen.

Vielleicht, hilft es nur paar Stunden, wie Du sagst,
vielleicht verstehe ich ja die Funktion, und lerne dadurch mehr dazu, als sich frustrierend 10 Stunden über ein Buch zu hocken,

und am Ende nur noch mehr Fragen zu haben, ohne etwas verstanden zu haben.

weil: nicht jeder lernt gleich (ich weiß das, ich habe unterrichtet, allerdings nicht in C#)
Vorsicht! Tante Gretel darf man nicht hänseln.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

14

13.02.2018, 09:03

Dir fehlt einfach noch ein gewisses Grundwissen, ohne das jegliches Programmieren sinnlos bzw. sehr "qualvoll" ist. Dieses Grundwissen solltest du dir aneignen.
Du solltest ein C#-Tutorial/-Buch komplett von vorne bis hinten durcharbeiten. Wenn es gut gemacht ist, baut alles aufeinander auf und führt dich durch die Thematik. Aber nicht jetzt irgendein Tutorial/Buch mittendrin aufschlagen und nach einem bestimmten Problem, das du jetzt hast, suchen. Da dir die Grundkenntnisse und Fachbegriffe fehlen, weißt du ja auch gar nicht, wonach du suchen sollst.

Analogie: Sagen wir mal, ich möchte lernen, wie man ein Auto konstruiert, aber habe überhaupt keine Ahnung von Physik/Mechanik. Ich könnte jetzt hunderte Leute fragen (oder in Büchern nachschauen): "Wie konstruiere ich den Motor?", "Wie konstruiere ich das Getriebe?" usw., aber die Antworten würde ich nicht richtig verstehen, weil sie gewisse Grundkenntnisse voraussetzen. Also setze ich mich hin und lese erst einmal ein Buch über Physik/Mechanik, damit ich weiß, was Kraft, Beschleunigung, Drehmoment etc. sind.

15

13.02.2018, 09:10

Ich schlage ja nicht mitten drin auf.

wenn ich mal darüber nachdenke, wo mein "Player" heute schon steht, ist das okay.
Ich habe schon sehr viel erreicht, und unmassen an Dingen daraus gelernt und verstanden.

aber ich begreife nicht - wieso ich nicht auf den Spieler, vom healtPack zugreifen kann.

nun ist es so:
dem einem, ein paar kleine "Tips" hinzuwerfen, ist super. Der programmiert vielleicht schon seit 100 Jahren, steht nicht am Anfang,
und weiß wo sein Fehler liegt.

einem Einsteiger das so zu präsentieren, macht die Sache schwer.
DER, (zumindest geht es mir so) lernt DEUTLICH MEHR daraus, den Code auch zu verstheen, statt zu raten wo was wieder falsch ist,
das stellt ihn nur vor noch schlimmere Herausforderungen.

nun verstehe ich z.B. eins nicht:

C#-Quelltext

1
2
3
4
5
    void OnTriggerEnter (Collider otherCollider) {
        if (otherCollider.GetComponent<EnemyBullet> () != null) { <-- hier passiert das gleiche, ich schnappe mir den Collider des "Gegners"
            Hit ((transform.position - otherCollider.transform.position).normalized); <<- ist ja nur n Force.
            Destroy (otherCollider.gameObject);  <- damit ich nicht 2x getroffen werden kann, muss der dann verschwidnen.
                        }


Was ich nun nicht verstehe ist:
wenn ich auf den Player zugreife, muß das doch genau so ablaufen.
Warum ist das hier nicht der Fall ?

*und vor allem* wie sieht es richtig aus.

( PS: das ist scherzhaft gemeint: Es gab auch Leute, die haben kein Buch gelesen, die betrachteten den Himmel und die Vögel, schnallten 2 Bretter an
einen Sitz, rollten einen Berg runter und versuchten abzuheben. Später, waren sie die Gebrüder Wright, und verstanden eine Menge von dem was sie taten,
und vorher, waren keine Bücher da. ) :)
Vorsicht! Tante Gretel darf man nicht hänseln.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

16

13.02.2018, 09:18

Ja, das ist dein Problem: Im Moment musst du raten und rätseln, wo was falsch ist. Weil dir die Grundkenntnisse fehlen. Mit diesen Grundkenntnissen wäre dir sofort klar, was Sache ist. Du kannst von niemandem erwarten, dass er dir die Grundkenntnisse vermittelt, die in tausenden Büchern stehen. Dafür bist du selbst zuständig.

Nochmal eine Auto-Analogie dazu: Mein (altes) Auto ist kaputt. Ich mache die Motorhaube auf und stehe vor einem Gewirr von Schläuchen, Kabeln usw., von denen ich keine Ahnung habe, wofür sie da sind und was sie tun. Für den Moment wäre mir geholfen, wenn mir jemand sagt, was ich tun muss. Aber dadurch verstehe ich nicht, wofür die einzelnen Dinge da sind und wie sie zusammenspielen. Würde ich das verstehen, könnte ich das Problem nachvollziehen und selber lösen (es ist ein altes Auto, weitestgehend simpel konstruiert und ohne Elektronik ;)). Dafür müsste ich mich einmal hinsetzen und die Grundlagen lernen. Das ist zwar mühsam und löst vielleicht nicht direkt das Problem, das ich gerade habe, aber am Ende ist mir damit mehr geholfen.

Das war's jetzt von mir zu diesem Thema. Ich werde aber niemanden daran hindern, dir Code "hinzuwerfen" ;)

17

13.02.2018, 09:43

Dann hoffe ich mal auf einen "Werfer", der mir 5 Zeilen Code hier mit der richtigen Klammersetzung herschreiben kann, damit ich sie verstehe.

weil:
gelernt habe ich daraus 0,
weitergeholfen hat es natürlich genau so wenig.

und bevor ich aufgebe, weil ich gleich gar nichts mehr verstehe wenn ich mit Büchern, nicht Learning by Doing anfange
und mir solcherlei Inhalt zu trocken wird

... wäre beiden Seiten mit wenigem geholfen gewesen.

Deinen Rat Respektiere ich mehr als Du denkst, und die Situation selbst ist mir bewußt, aber es gibt Menschen, die eben mit reinem "trockenem lesen"
nichts anfangen können. Ist so, echt ehrlich.

Nun ist das Problem:
wenn mich jemand etwas fragt, von dem er nichts versteht, erkläre ich das in den meisten Fällen einleuchtend.
Ob ihm damit nur temporär geholfen ist, oder generell - stellt sich später heraus.

Ich gebe sicherlich auch keine "riesen Grundkurse" mit jedem Klimbimm, aber jemandem eine einfache Situation zu überbrücken,
spart nicht nur ewige Erklärungen (im Sinne von Autos, Motoren und Physik) sondern oft auch beiden Seiten viel Frust.

kommt er dann immer noch nicht zurecht, schau ich noch mal rein,
wenn er jedoch mit jedem Kleinkram gerannt kommt - dann empfehle ich ihm auch, die Nase erst einmal in andere Dinge zu stecken.

ich bin also damit ganz bei Dir.

Aber mir ist damit absolut nicht geholfen, den Fehler nicht zu finden.
ich habe so viele Fehler in meinem "C# Anfängertum" schon gefunden, und auch bereits selbstständig gelöst, das ich da wo es
sicherlich ne Sache von 2 Minuten gewesen wäre - nun nichts verstehe -

da hilft es mir nicht, mich so lange durch bittere Lektüre zu schieben, bis ich die Lust verliere.
sondern nur: eine punktuelle Lösung.

... die ist ja kein ganzer C# Kurs, sondern nur die Frage:
- warum reagiert mein Game Objekt nicht.

als muß etwas in meiner Definition der Collider falsch sein.

das wäre - echt hilfreich gewesen.

aber macht nichts, vielleicht möchte jemand anderes helfen, wenn nicht - werde ich mich weiter durch YT oder Kurse wühlen,
bis ich auf den "i Punkt" stoße

... und dann verstehe ich das auch.

wenn man aber noch nie von einem anderem Script direkt in die Stats des Players eingegriffen hat, sondern alles immer
von ihm aus gelöst hat, wäre eine Hilfe im Sinne von: "Dein Fehler liegt da, mach die Augen auf"

... sinnvoll gewesen.

Dennoch
Herzlichen Dank für Deine Zeit, ich weiß das sehr zu schätzen.

PS: das nächste Mal wenn mir einer die Frage stellt z.B. "Warum wird n mein Modell nich exportiert, der phaselt was von VertexColors"
werde ich dem auch sagen:

Vertex Colores definieren, dann geht das.

Wenn er fragt wie, sage ich ihm:
Kaufe Dir ein Buch zu Blender.
Vorsicht! Tante Gretel darf man nicht hänseln.

18

13.02.2018, 10:25

Zitat


wenn man aber noch nie von einem anderem Script direkt in die Stats des Players eingegriffen hat, sondern alles immer
von ihm aus gelöst hat, wäre eine Hilfe im Sinne von: "Dein Fehler liegt da, mach die Augen auf"

... sinnvoll gewesen.


Dein Problem könnte sich auch auf 5 Minuten googlen reduzieren lassen.Dementsprechend solltest du entweder lernen wie man Google richtig benutzt(und das finde ich tatsächlich eine wichtige Eigenschaft von einem Programmierer) oder schnappst dir ein paar Tutorials zu den Grundlagen (da gibts auch von Unity genug WO GENAU DEIN Problem erklärt wird).

War jetzt auch nicht böse gemeint.

19

13.02.2018, 10:59

Hallo Black :)

Du hast in der Hinsicht Recht, allerdings habe ich nicht die richtigen "Ideen" gehabt, zum googlen (iss ja auch 99% English,
dazu gibt es ne Masse Zeugs, wo Leute das auf Maus oder erweitertes beziehen )

die Lösung ist so simpel wie einfach gewesen:
Mein Startscript, war korrekt:

C#-Quelltext

1
2
3
4
5
    void OnTriggerEnter (Collider otherCollider) {
if (otherCollider.GetComponent<HealthPack> () != null) {
            health++;
            Destroy (otherCollider.gameObject);
        }



Der Fehler ist mir jetzt erst aufgefallen :(

ich habe das NICHT im "healthPack" definiert, weil das eigentlich UNfug ist, es gibt ja nur 1 Herz dazu.
Dazu kann das Objekt ja an jeder Ecke rumliegen (wo man es halt hintut, - oder - sogar Spawnen lässt )

der Punkt war easy: ( nich lachen )
ich hatte die Empty auf 0,0,0.
darin ne weitere Empty 0,0,0

und den Würfel ( mein Testobjekt ) hatte ich vergessen zu resetten. Argh.
Also lag das Collisionsobjekt irgendwo in den Bergen am Anfang der Scene rum.

da kann mein Spieler natürlich ewig drin rumlaufen :(
Tschuldigung noch mal für die Frage.

Problem ist damit behoben, und Collider, gehört schlicht in den Spieler rein.
Das löst JETZT zwar nicht das (in meinen Augen deutlich kompliziertere) Problem: wie greife ich auf den Collider von
einem anderem Objekt aus zu (das kann nich so schlimm werden)

- aber das Problem - was derzeit aktiv ist.
und wie gesagt.

ich fange erst an, ich lerne ja noch.
es ist noch kein Meister vom Himmel gefallen.

aber nützliche Tips (auch nicht böse gemeint) sind manchmal sinnvoller, als ewige Arien, das andere Bücher lesen sollen.
WEIL:
mit meinen Feinden funktioniert es auch.
und mein "2x If" funktioniert ja auch tadellos.

manchmal, sind für die ersten Projekte, die einfachen Lösungen halt die besten.
Ich glaube kaum, das irgend jemand hier als Meister vom Himmel fiel, hoffe aber, er hat nicht Antworten bekommen wie:

"lies ein Buch".
ist ne Möglichkeit, aber ich denke bei aktivem daran arbeiten + eine richtige Hilfe, so das man sie versteht

... ist einem mehr geholfen.

Dennoch, vielen Dank Euch beiden für Eure Zeit + Mühe, das meine ich ernst.
nur beim nächstem Mal, bitte so erklären das den Code ein Einsteiger auch nachvollziehen kann, denn wenn man ihn VERSTEHT
hat man etwas gelernt

... ohne 20 Kapitel eines Buches in 10 Stunden lesen zu müssen.
Vorsicht! Tante Gretel darf man nicht hänseln.

Tiles

Treue Seele

Beiträge: 168

Wohnort: none

  • Private Nachricht senden

20

13.02.2018, 11:05

Zitat

Du solltest ein C#-Tutorial/-Buch komplett von vorne bis hinten durcharbeiten.


Ein C# Tutorial oder C# Buch würde hier mit dem aktuellen Problem gar nicht weiterhelfen. C# hat keinen Inspector in dem du Game Objects zum referenzieren reinziehen kannst. Siehe unten. Es bräuchte also ein Unity Buch oder ein Unity Tutorial.

Ich stehe dem theoretischen Ansatz eher skeptisch gegenüber. Theorie ist zwar wichtig, und da kommst du auch in Unity nicht drum rum. Aber Unity ist ja eigentlich gerade gut dafür geeignet C# zu lernen indem man kleine Projekte damit realisiert. Und dadurch eben den Umgang mit der Sprache lernt. Spielerisch quasi, in der praktischen Anwendung. Wenn du dann später mehr brauchst kannst du dein Wissen immer noch vertiefen. Das ist zumindest meine Erfahrung damit.

Zitat

aber ich begreife nicht - wieso ich nicht auf den Spieler, vom healtPack zugreifen kann.


Die entsprechende Variable ist eben Teil der anderen Klasse. Und erst mal nur von dort aus zugreifbar. Du musst dem Code im Healthpack erst mal sagen wo er die Health Variable vom Player herbekommt.

Ein Weg wäre über GetComponent(). Das würde ich aber meiden wie der Teufel das Weihwasser weil Saulangsam. https://docs.unity3d.com/410/Documentati…me_Objects.html

Deswegen nimmt man am Besten die Methode hier wenn es sich irgendwie machen lässt. Eine Variable anlegen, direkt das Playerobjekt im Inspektor auf dein Healthpack reinziehen. Und dann eben auf die Healthvariable des Playerobjektes zugreifen: https://answers.unity.com/questions/6610…o-variable.html

Fang erst mal mit dem auslesen an. Wenn das klappt, und du die Healthvariable vom Healthpack her auslesen kannst, dann kannst du die Healthvariable des Players mit entsprechendem Code auch verändern. Das ist dann eine Zeile mehr ...

Das ganze als Prefab speichern nicht vergessen. Sonst hat nur dieses eine Healthpack die Referenzierung.

Ich hoffe das hilft dir weiter :)

LG

Tiles
Free Game Graphics, Freeware Games https://www.reinerstilesets.de

Werbeanzeige