Unity3d C# Collider?

Hallo liebe Coding-Freunde!

Ich sitze gerade an einem kleinen Unity3d Game bei welchem man mit einer Kugel herum rollt und lustig rotierende Würfel aufsammeln muss (Hab nach einer Tutorialreihe gearbeitet https://www.youtube.com/watch?v=ubmVc6hZEVg&t=130s ).

Um die Berührung zwischen Spieler und Würfel zu erkennen, diese aufzusammeln, zu deaktivieren und meinem Score einen Punkt hinzuzufügen nutze ich unter anderem diese Zeilen:

void OnTriggerEnter(Collider collider) {
		if (collider.gameObject.CompareTag ("Gem")) {
			collider.gameObject.SetActive (false);
			count++;
			UpdateScoreText (); 
        }

Das funktioniert auch genau so wie es sollte.

Jetzt möchte ich noch Objekte hinzufügen, welche bei Berührung 10 Punkte von einer 100 Punkte großen HP Leiste abziehen. Dafür habe ich unter anderem diesen Code verwendet:

void OnTriggerEnter(Collider enemyHit) {
		if (enemyHit.gameObject.CompareTag ("Enemy")) {
			hp = hp - 10;
			UpdateHPText ();
		}

Jedoch sieht das Unitys Console gar nicht gerne und bestraft mich mit dieser Fehlermeldung:

error CS0111: A member `PlayerController_New.OnTriggerEnter(UnityEngine.Collider)' is already defined. Rename this member or use different parameter types

Leider kenne ich mich mit Coding genauso gut aus wie mit Chinesisch. Bei "ni hao" fängt es nicht nur an, da hört es auch schon wieder auf. Ich dachte, dass "Collider" ein normaler Befehl bzw. eine Definition sei, aber irgendwie stimmt das wohl nicht so ganz...Außerdem verstehe ich nicht ganz, was ich hinter den Collider in die Klammern schreiben muss (Collider collider). Ist das zweite, kleingeschriebene "collider" der Name dieser Kollision oder was? Ist mein (Collider enemyHit) sowieso falsch, weil es "enemyHit" einfach nicht gibt? Und was muss ich ändern, wo ich doch genau den selben Ablauf wie beim Würfel aufsammeln haben will, mit dem einzigen unterschied, dass das Objekt NICHT deaktiviert wird und Punkte abgezogen, statt dazugezählt werden.

Ich bin verwirrt, hoffe aber, dass es ein paar clevere Leute gibt die gerade überlegen lächelnd leicht ihren Kopf schütteln und sich meiner erbarmen, mich bei der Hand nehmen und mir die Welt erklären.

Vielen Dank schon mal

KomischerLappen :)


Computer, Games, programmieren, Programmiersprache, Unity 3D, C (Programmiersprache), Spiele und Gaming
Globale Variablen durch Zeiger ersetzen?

Hallo,

bei der folgenden Programmieraufgabe würde ich gerne die globalen variablen durch Zeiger ersetzten, da man mit den globalen Variablen ja etwas vorsichtig sein sollte.

include include include

double x0; //globale variablen int ok, anzit;

double fct (int fn, double x){ // Funktion fct mit 2 Parametern

double y;

switch (fn) {                                               // switch case funktion zum Auswählen der Funktion
    case 1:     y = sin(x);                     break;
    case 2:     y = exp (x) - 5.0 * x + 1.0;    break;
    case 3:     y = x * x - 2.0;                break;
    case 4:     y = (1.0 / 7.0) + (1.0/x);      break;
    case 5:     y = 2.0 * x - 2.0;              break;
    default:    y = 0.0;                        break;
}
return y;

}

void nullstelle (int fn, double a, double b, double g) { // Prozedur Nullstelle

double fa, fb, fm, m;
                                                                // Verarbeitung der Parameter und Variablen

fa = fct (fn, a);
fb = fct (fn, b);

while ((b-a) > g) {

    m = (a+b) / 2.0;
    fm = fct (fn, m);

    if ((fa*fm) < 0) {
        b = m; fb = fm;
    }

        else {
            a = m; fa = fm;
        }
    anzit++;
}
        x0 = m;
        ok = 1;

}

int main(){ // Hauptprogramm // Fordert den Benutzer auf Befehle einzugeben int fn; double a, b, g;

printf ("1) f(x) = sin (x) \n");
printf ("2) f(x) = e^x - 5x + 1 \n");
printf ("3) f(x) = x^2 - 2 \n");
printf ("4) f(x) = (1/7) + (1/x) \n");
printf ("5) f(x) = 2x - 2 \n");


while (1) {
    printf ("\nWaehlen Sie eine Funktion aus: ");
    scanf ("%d", &fn);

    printf ("Linker Grenzwert: ");
    scanf ("%lf", &a);

    printf ("Rechter Grenzwert: ");
    scanf ("%lf", &b);

while (fct (fn, a) * fct (fn, b) > 0.0){
    printf ("\nf(a) und f(b) haben gleiches Vorzeichen, bitte andere Grenzen eingeben!");
    printf ("\nLinker Grenzwert: ");
    scanf ("%lf", &a);
    printf ("\nRechter Grenzwert: ");
    scanf ("%lf", &b);
    }

    printf ("Genauigkeit: ");
    scanf ("%lf", &g);

    nullstelle (fn, a, b, g);

    if (ok == 1)
        printf ("x0 \t = %.15f\n", x0);
        printf("f(x0) \t = %.15f\n", fct(fn, x0));
        printf("%d Iteration\n", anzit);

}

return 0;

}

programmieren, C (Programmiersprache)
Wie füge ich eine Abfrage Möglichkeit ein in C#, sodass der Nutzer eine ungerade Zahl eingibt und sich dadurch das "Rautenerstellungsprogramm" auslöst s.u.?

Hallo Zusammen,

ich habe ein ansatzweises Programm fertigstellen können es funktioniert aber nicht ganz so wie ich es haben wollte (Ich bin noch Anfänger in Programmiersprachen) unten hänge ich mal das Programm an. Ich habe dabei mehrere Probleme zum einen will ich eine Nutzerabfrage einbauen (Konsolen Applikation) wo der Nutzer eine ungerade Zahl eingeben soll wo durch jeweils eine unterschiedliche Raute ausgegeben werden soll.

Und zum Anderen will ich noch herausfinden wie ich es hinbekomme das die Angezeigete Raute einerseits innen leer ist und andererseits das Programm nicht endlos Zeilen ausspuckt die ich in meinem Programm nicht brauchen kann.

Hier nun noch das was ich versuchsweise bisher geschrieben habe (Es handelt sich dabei um die Aufarbeitung einer Klassenarbeit aus JAVA die ich nun in C# eingenhändig schreiben soll):

namespace Klassenarbeit_Aufgabe_2 { public class Program { public static void Main(string[] args) { Console.WriteLine("Bitte geben Sie eine ungerade Zahl ein: "); string Zahl = Console.ReadLine();

            int LeerzeichenG, LeerzeichenRL, BREITE = 9;
            for (int x = 1; x <= BREITE; x = x + 2)
            {
                LeerzeichenG = BREITE - x;
                LeerzeichenRL = LeerzeichenG / 2;

                for (int lz = 0; lz < LeerzeichenRL; lz++)
                {
                    Console.Write(" ");

                }

                for (int xse = 0; xse < x; xse++)
                {
                    Console.Write("*");

                }

                for (int lz = 0; lz < LeerzeichenRL; lz++)
                {
                    Console.Write(" ");

                }
                Console.Write("\n");

            }

            for (int x = 9; x <= BREITE; x = x - 2)
            {
                LeerzeichenG = BREITE - x;
                LeerzeichenRL = LeerzeichenG / 2;

                for (int lz = 0; lz < LeerzeichenRL; lz++)
                {
                    Console.Write(" ");

                }

                for (int xse = 0; xse < x; xse++)
                {
                    Console.Write("*");

                }

                for (int lz = 0; lz < LeerzeichenRL; lz++)
                {
                    Console.Write(" ");

                }

                Console.Write("\n");

            }
            Console.ReadLine();
    } 
}

}

Für jegwede Hilfe oder Anregung wäre ich schon dankbar.

Mit freundlichen Grüßen

MJH92

Computer, C (Programmiersprache), Spiele und Gaming
Probleme mit C-Programmierung: Zahlen sortieren?

Hallo, ich habe folgendes Programm geschrieben und komme einfach nicht weiter. Das Programm zählt die Buchstaben einer .txt Datei und gibt ebenso deren Häufigkeit an. Ich soll jetzt noch die Anzahl der Buchstaben beginnen mit der größten Zahl sortieren. Die Buchstaben müssen dabei auch stimmen und natürlich die Häufigkeit. Kann mir jemand dabei helfen?

So weit bin ich gekommen, eine Beispiel txt Datei wurde implementiert. Ich programmiere mit Codeblocks.


#include <stdio.h>
include

char dateiname[40]; int anweisung1;

int main(int argc, char **argv) { if (argc != 2) { printf("Der Dateiname fehlt\n"); return 0; }

FILE *fp = fopen(argv[1], "r");
if (fp == NULL)
{
    printf("Die Datei kann nicht geoeffnet werden\n");
    return 0;
}

double anzahl[26] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int gesamt = 0;


while (1) //Zähschleife
{
    int buchstaben = fgetc(fp);
    if (buchstaben < 0)
    {
        break;
    }
    if (buchstaben >= 'A' && buchstaben <= 'Z') //Zählschleife für Großbuchstaben
    {
        anzahl[buchstaben - 'A']++;
        gesamt++;
    }
    else if (buchstaben >= 'a' && buchstaben <= 'z')
    {
        anzahl[buchstaben - 'a']++; //Zähschleife für Kleinbuchstaben
        gesamt++;
    }
}


fclose(fp);

int anweisung;
printf("Dieses Programm zaehlt die die Buchstaben in einer .txt Datei\nund gibt die Haeufigkeit der Buchstaben an\n");
printf("Sie haben jetzt die Auswahl zwischen:\n");
printf("1. Die .txt Datei mit printf in der Konsole auszugeben\n");
printf("2. Eine neue .txt Datei zu speichern\n\n");
scanf("%d", &anweisung);

switch(anweisung)
{
case 1:
    printf("Die Gesamtzahl der Buchstaben lautet: %d\n",gesamt);

    int i;
    for (i = 0; i < 26; i++)
    {
        printf("%c : %0.lf", (i + 'A'), anzahl[i]);
        double prozente = anzahl[i]*100/gesamt;
        printf("\tHaeufigkeit: %.2lf%%\n",prozente);
    }
    return 0;

case 2:

    printf("\nBitte geben Sie den Dateinamen mit .txt an:\n\n");
    scanf("%s", dateiname);
    printf("\nIhre Datei heisst: %s.\n", dateiname);

    FILE* fp;
    fp = fopen(dateiname,"w");
    fprintf(fp,"Die Gesamtzahl der Buchstaben lautet: %d\n",gesamt);

    for (i = 0; i < 26; i++)
    {
        fprintf(fp,"%c : %0.1f\t  ", (i + 'A'), anzahl[i]);
        double prozente = anzahl[i]*100/gesamt;
        fprintf(fp,"Haeufigkeit: %.2lf%%\n",prozente);
    }
    return 0;
    fclose(fp);
}

}

programmieren, C (Programmiersprache), codeblocks
wieso kommt ein fehler beim kompilieren?

Hey Leute, bin 15 Jahre alt und lerne gerade die Programmiersprache, weil ich etwas in Richtung Informatik studieren will. Dafuer habe ich mir ein Buch gekauft und das heisst 'C Programmieren von Anfang an' von Helmut Erlenkoetter. Ich scheitere irgendwie schon beim Kompilieren. Dort wird ein Beispielprogramm angegeben das man abschreiben sollte

/* bspl0001.c */ 

#include <stdio.h>

main(){ 

    printf("\nDies ist mein erstes C-Programm.\n");

    printf("\nWie sie sehen, kann 'printf' ");

    printf("nicht nur Texte drucken,\n);

    printf("sondern auch rechnen. \n\n"); 

    printf("13 * 7 = %i \n", 13 * 7);

 }

und wenn ich kompilieren will dann kommen mehrer Error's. Die Entwicklungsumgebung mit der ich arbeite heisst Pelles C IDE. Ich habe mir diese ausgesucht, weil ich von mehreren Personen gehoert habe, dass sie anfaengerfreundlicher ist. Ich hoffe ihr koennt mir weiterhelfen.

Die Error's die mir angezeigt werden:

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(6): error #1040: Unterminated string or char constant.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(3): warning #2099: Missing type specifier; assuming 'int'.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(3): warning #2117: Old-style function definition for 'main'.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(7): error #2140: Type error in argument 1 to 'printf'; expected 'const char * restrict' but found 'int'.

C:\Users\Amir x Lumpi\Desktop\fail\erstes Programm.c(7): error #2001: Syntax error: expected ')' but found ';'.

* Fehlercode: 1 * Fertig.

programmieren, linker, Informatik, Programmiersprache, C (Programmiersprache), Erzeuger, kompilieren, Quellcode
C Programmierung: Scanf-befehl funktioniert nicht nach If- Anweisung

Guten Tag habe da ein Problem bei einem Programm an dem ich gerade arbeite: Ich soll mit Kommandos (list, pop, push und exit) einen Stack mit zeichen füllen, das letzte zeichen löschen, eine Liste des Stacks ausgeben oder das Programm verlassen. Momentan funktioniert nur das verleassen des Programms, da der Scanf-befehl hinter der if-Anweisung nach dem Kompilieren nicht ausgeführt wird, um ein Zeichen einzulesen. (fgetc() hat auch nicht funktioniert).

Vielleicht kann mir ja jemand erklären woran es liegt.

Quelltext:

include include include define NSTACK 15

int main(){ //Anfang Main

//Variablendeklaration char eingabe[6]; char stack[NSTACK]; char item; char z; //zwischenspeicher für zeichen int sp=0; //Ende Variablendeklaration

printf("\nStack auffüllen (bis 15 Zeichen)\n");
printf("Liste der Befehle:\n\n");
printf("list = Liste des Stacks anzeigen\n");
printf("push = Zeichen auf den Stack legen\n");
printf("pop = Zeichen vom Stapel nehmen\n");
printf("exit = Programm beenden\n\n");

 while(eingabe){    //Eingabeschleife

  printf("\nBitte geben Sie ihren Befehl ein: ");
  scanf("%s", &eingabe);
  printf("eingegebener Befehl: %s\n", eingabe);

  
  if (strcmp(eingabe,"exit") == 0){             //exit
printf("\n!!Das Programm wird beendet!!\n");
exit(1);
  } //ende exit
  
  else if (strcmp(eingabe,"push") == 0){            //push
scanf("%c", &z);
printf("Zeichen wird auf Stack gelegt\n");
  } //ende push
  else if (strcmp(eingabe,"pop") == 0){         //pop
printf("Das obertste Zeichen wird entfernt\n");
  } //ende pop
  else if (strcmp(eingabe,"list") == 0){            //liste ausgeben
printf("Die Liste des Stacks wird ausgegeben\n");
printf("%s\n", &stack);
  } //ende list
  
 }  //Ende eingabeschleife
 


printf("\ntest");

printf("\n\n"); return 0; } //Ende Main

programmieren, Informatik, scan, stack, C (Programmiersprache)

Meistgelesene Fragen zum Thema C (Programmiersprache)