First person movement in Unity?

Ich habe schon von allen möglichen Tutorials abgeschrieben aber es geht trotzdem nicht

Beim Start dreht sich die Kamera komplett random in alle möglichen Richtungen selbst wenn ich meine Maus nicht bewege

das ist der Code von der MainCamera:

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

public class CameraMovement : MonoBehaviour
{
    
    Vector3 rotation;
    public GameObject player;

    void Update()
    {

        transform.position = player.transform.position;
        transform.Translate(0, 0.5f, 0);

        rotation += Input.GetAxis("forwardBackwardRotate") * Vector3.right;
        rotation += Input.GetAxis("leftRightRotate") * Vector3.up;
        rotation *= 50 * Time.deltaTime;

        transform.Rotate(rotation);

    }

}

und das ist vom Player (falls es nötig ist) :

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

public class PlayerMovement : MonoBehaviour
{
    
    public int speed;
    Vector3 movement;
    Vector3 rotation;
    CharacterController player;

    void Start()
    {
        
        player = GetComponent<CharacterController>();

    }

    void Update()
    {

        movement += transform.right * Input.GetAxis("leftRightMove");
        movement += transform.forward * Input.GetAxis("forwardBackwardMove");
        movement *= speed * Time.deltaTime;
        player.Move(movement);

        rotation = Input.GetAxis("leftRightRotate") * Vector3.up;
        rotation *= 50 * Time.deltaTime;
        transform.Rotate(rotation);

    }

}

hier ist das Video: https://drive.google.com/file/d/16LzqYkn3ojHhpp6Aw-cWdq_sCp9kUsfq/view?usp=sharing

C Sharp, Unity, Unity Engine
Permutationen in C# eine Generische Lösung gesucht?
static void printArr(int[] a, int n)
    {
        for (int i = 0; i < n; i++)
            Console.Write(a[i] + " ");
        Console.WriteLine();
    }
 
    
    static void heapPermutation(int[] a, int size, int n)
    {
        
        if (size == 1)
            printArr(a, n);
 
        for (int i = 0; i < size; i++) {
            heapPermutation(a, size - 1, n);
 
            
            if (size % 2 == 1) {
                int temp = a[0];
                a[0] = a[size - 1];
                a[size - 1] = temp;
            }
 
            
            else {
                int temp = a[i];
                a[i] = a[size - 1];
                a[size - 1] = temp;
            }
        }
    }
 
   
    public static void Main()
    {
 
        int[] a = { 1, 2, 3 };
        heapPermutation(a, a.Length, a.Length);
    }

Ich habe den Heap Algorithmus in c# implementiert. Es klappt soweit alles wie es soll aber nun würde ich gerne eine generische Methode schreiben. Ich habe es versucht doch leider klappt es nicht. Meine Idee war die Methode heap Permutation einfach generisch zu gestalten indem ich folgendes mache

„class Bclass {
  public void anyMethod<U>(T parmA, U parmB) {
  // ...
  }“

Leider funktioniert das im Zusammenhang mit dem Array das dort übergeben wird überhaupt nicht. Ich weiß nicht warum... 

Computer, Schule, programmieren, C Sharp, Informatik
C# Werte aus vererbten Objekten in ArrayList aufrufen?

Guten Tag,

ich bin neu in C# und versuche gerade eine kleine Klasse zum üben zu erstellen, jedoch bin ich auf ein Problem gestoßen, bei dem ich keine Ahnung habe. Ich versuche gerade von objekten, die in einer ArrayList sind, Werte zu entziehen (per selbsterstellter ToString()), aber ich kann dies leider irgendwie nicht. Es kann auch sein, dass das anders ist als in Java.

Ich versuche halt es so wie in Java zu machen, nähmlich: ArrayList[i].ToString() , bekomme aber nichts raus.

            public classes(int hp, String name, int def, int atk)
            {
                this.name = name;
                this.hp = hp;
                this.def = def;
                this.atk = atk;
            }

                        public void setHp(int hp)
            {
                this.hp = hp;
            }
            public void setDef(int def)
            {
                this.def = def;
            }


            public int getHp() 
            {
                return hp;
            }
            public int getAtk()
            {
                return atk;
            }




            public abstract String ToString();


            public abstract void print();


        }
        class Attacker :classes
        {
            public int critrate = 15;
            public int critdmg = 50;
            public int piercing = 0;
            public int hp = 0;
            public int def = 0;
            public int atk = 0;
            public String name = "Guest";


            public Attacker(int hp, int def, int atk, String name, int critrate, int critdmg, int piercing) : base(hp, name, atk, def)
            {
                this.hp = hp;
                this.def = def;
                this.atk = atk;
                this.name = name;
                this.piercing = piercing;
                this.critdmg = critdmg;
                this.critrate = critrate;
            }
            public override void print()
            {
                Console.WriteLine(ToString());
            }
            public override string ToString()
            {
                return "Username: " + name + "\nHp: " + hp + "\nDefense: " + def + "\nDamage: " + atk
                    + "\nPiercechance: " + piercing + "%\nCritdmg: " + critdmg + "\nCritrate: " + critrate + "%"
                    ;
            }


        }


        static void Main(string[] args)
        {
            Attacker d = new Attacker(50, 20, 10, "d", 10, 15, 0);
            Attacker e = new Attacker(100, 30, 5, "e", 2, 3, 2);
            Attacker f = new Attacker(1000, 1, 0, "f", 0, 0, 0);
            Attacker g = new Attacker(2, 0, 100, "g", 20, 200, 10);


            Monsters.Add(d);
            Monsters.Add(e);
            Monsters.Add(f);
            Monsters.Add(g);




            Monsters.ToString();

Ich hab das dann zu Monsters.ToString() umgeändert, jedoch kein Erfolg.

Danke im Vorraus

programmieren, C Sharp
ASCII Art in der Konsole ausgeben [C#]?

Guten Abend! Ich versuche seit einigen Tagen ein byte array in der Konsole auszugeben, was dann später "C#" als kleines Artwork in der Konsole ausgegeben wird. Ich weiß aber nicht, wie ich

a) mein Ganzes byte Array ausgeben lasse (er gibt nicht das vollständige array in der Konsole aus warum auch immer) und:

b) wie ich die Zahlen im array zu Zeichen zuweisen kann (sprich Leerzeichen, C und #) damit es das C# "artwork" in der cmd zeigt.

Wo liegen meine Fehler? Wenn möglich bitte mit Beispielen.

using System;
using System.IO;

namespace ESA_2
{
   class Program
   {
       public void ESAIn(string Path)
       {
           byte[] array = { 32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
                           32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
                           67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
                           67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
                           67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
                           32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
                           32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };

           //Anhand der ASCII Code Tabelle lassen sich 32 zu Leerzeichen, 67 zu C
           // und die 35 zu # Zeichen Übersetzen, was, wenn wir die Ausgabe
           //umstrukturieren, eine 'C#' in der Konsole ausgibt


           FileStream stream = File.Open(Path, FileMode.Truncate, FileAccess.ReadWrite);


           stream.Write(array, 0, array.Length);
           stream.Close();
       }
       public void ESAOut(string Path)
       {
           BinaryReader reader = new BinaryReader(File.Open(Path, FileMode.Open));
           var count = 0;
           for (int i = 0; i < reader.ReadByte(); i++)
           {
               count++;
               Console.Write("{0} ", reader.ReadByte());
               if (count == 11)
               {
                   Console.Write("\n");
                   count = 0;
               }
           }
           reader.Close();
           Console.WriteLine();
       }
       static void Main(string[] args)
       {
           string Path = @"C:\Users\Dean Aleksander\source\repos\ESA_2\ESA_2\ESA02.txt"; ;
           Program test = new Program();
           test.ESAIn(Path);
           test.ESAOut(Path);
           Console.ReadLine();
       }
   }
}

Die Aufgabenstellung: "Schreiben Sie eine Methode „ESA2In“ in einem neuen Projekt „ESA_2“, mit der dieses Array in eine in Ihrem Projektmappenordner anzulegende Datei „ESA2.txt“ gespeichert werden kann. Schreiben Sie sodann eine weitere Methode „ESA2Out“, mit der dieses Array aus der Datei ausgelesen und auf Konsole ausgegeben werden kann. Die Konsolenausgabe soll in sieben Zeilen mit jeweils elf Zeichen gegliedert werden – dies entspricht auch der vorstehenden Anordnung der Array-Elemente. Beachten Sie aber, dass eine Zeile im Array aus 33 Zeichen besteht – Ihre Konsolenausgabe soll hingegen elf Zeichen umfassen. "

Computer, Schule, C Sharp, Informatik, Visual Studio
C# kann Variable in der selben Klasse nicht benutzen?

Moin,

Bin grad dran einen Launcher zu erstellen und hab eine Funktion gemacht womit man eine Exe Datei wählen kann die als String Variable namens filePath gespeichert wird, wenn ich diese rufen will damit der Launch Button weiß was er starten soll bekomme ich den Error "Der Name "filePath" ist im aktuellen Kontext nicht vorhanden."

Wie kann ich hin bekommen das die Variable von der gesamten Klasse verwendet werden kann?

Code in Frage:

        private void button8_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.InitialDirectory = "c:\\";
                openFileDialog.Filter = "Exe Files (.exe)|*.exe"; ;
                openFileDialog.FilterIndex = 2;
                openFileDialog.RestoreDirectory = true;


                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    String filePath = openFileDialog.FileName;
                    textBox1.Text = filePath;
                }
            }
        }


        private void button7_Click(object sender, EventArgs e)
        {
            string WindowsUser = Environment.UserName;
            string GameName = "Game";
            System.Diagnostics.Process.Start($@"C:\Users\{WindowsUser}\AppData\Local\{GameName}\Saved\SaveGames.");
        }


        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start($"{filePath}");
        }
    }
}
Computer, Technik, programmieren, C Sharp, Code, Informatik, Visual Studio

Meistgelesene Fragen zum Thema C Sharp