Wie zeigt man Trophäen des Gegners mit Photon an?

Ich habe ein Multiplayer-Spiel mit Photon in der Unity Game Engine gemacht. Doch eine kleine Frage habe ich noch:

Das Spiel ist etwa so aufgebaut, dass man in eine Lobby mit einen Gegner kommt, der ungefähr die gleichen Trophäenanzahl wie man selber hat. Für die Trophäen habe ich einen einfachen Integer im WonControllerScript zubereitet.

Im Matchmaker-Skript habe ich das hier stehen:

public void StartMatchmaking()
{
  playerTrophies = wonController.trophy;
  PhotonNetwork.NickName = userManager.nickName;
  PhotonNetwork.JoinRandomRoom(); // Suche nach einem Raum mit maximal 2 Spielern
}

public override void OnJoinRandomFailed(short returnCode, string message)
{
  RoomOptions roomOptions = new RoomOptions();
  roomOptions.MaxPlayers = 2;

  // Überprüfe, ob der SpielerTrophies-Wert korrekt initialisiert wurde
  if (playerTrophies >= 0)
  {
    // Benutzerdefinierte Raum-Eigenschaften für die Lobby setzen
    roomOptions.CustomRoomPropertiesForLobby = new string[] { "Trophies" };
    // Benutzerdefinierte Raum-Eigenschaften festlegen
    ExitGames.Client.Photon.Hashtable customRoomProperties = new ExitGames.Client.Photon.Hashtable();
    customRoomProperties.Add("Trophies", playerTrophies);
    roomOptions.CustomRoomProperties = customRoomProperties;
  }

  PhotonNetwork.CreateRoom(null, roomOptions, TypedLobby.Default);
}

Jetzt möchte ich, dass zwei Texte einmal den eigenen Trophäenwert anzeigen und zum anderen (der zweite Text) den Trophäenwert des Gegners anzeigt. Wie geht das?

C Sharp, Trophäen, Unity
Was genau beeinflusst die Festplatte die allgemeine Performance des Laptops bei Gaming und Entwicklung?

Hallo!
Ich überlege meinen Laptop aufzurüsten, da die internen 500 GB (SSD) langsam aber sicher zur Neige gehen. Einen weiteren Slot für eine Festplatte hat der Laptop nicht, und da ich wenig Lust habe, die vorhandene auszutauschen (und somit das OS komplett neu aufzusetzen) habe ich mir überlegt eine externe SSD anzuschaffen.

Den Laptop nutze ich hauptsächlich für folgendes:

Im Internet surfen: ChatGPT, Streaming auf Netflix und co...

Zocken:
von A bis Z ist hier alles vertreten.Ob No Name Pixel Art Indie Game, oder Hogwarts Legacy Marathon

Bildbearbeitung: Hauptsächlich handelt es sich hier um 2D Sprites die ich erstelle. Ich wollte mir in Zukunft allerdings auch Blender und somit die 3D Modellierung genauer anschauen

Unity: Spieleentwicklung auf Anfänger Niveau. Sprich, ich kann noch nichts optimieren, habe zwanzigtausend Tabs mit Tutorials nebenher geöffnet, und viele Projekte existeren aus Angst vor Datenverlust mehrmals zu verschiedenen Zeitpunkten , sodass die Menge an Daten, die gespeichert werden wollen, schnell nach oben schießt, grade bei vielen Assets.

Joa, jetzt frage ich mich natürlich, auf was ich beim Kauf achten muss, und welche Aspekte meines täglichen Nutzens von der Festplatte beeinflusst werden. Logisch, dass ich mehr Speicherplatz bekomme......aber beispielsweise unterscheiden sich die Schreibgeschwindkeiten extremst und das kommt mir alles etwas Spanisch vor :D

Ich habe übrigens USB 3.0 falls das relevant ist?
Nun....danke für eure Hilfe!!! (=

Gaming, externe Festplatte, noob, Performance, Speicherplatz, SSD, Unitymedia, Solid-State-Drive, Unity, USB 3.0, Unity2D, Laptop
Box collider funktioniert nicht mit rb.MovePosition?

Ich habe mit Unity angefangen und habe ein kleines problem:
Und zwar habe ich eine kamera mit boxcollider und einen terrain mit terraincollider. Nur leider kann ich die kamera durch das terrain durchschieben! Ich habe schon den verdacht dass es an rb.MovePosition liegt aber weiß nicht wie ich das reparieren kann! Alles wie zumbeispiel rigidbody sind auf der kamera da bin ich mir sicher! Es kommt auch kein Fehler in der Konsole!
Mein Kompletter code:

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

public class SmoothMove : MonoBehaviour
{
   public float rotationSpeed = 2.0f;
   public float smoothRotationFactor = 5.0f;
   private float yaw = 0.0f;
   private float pitch = 0.0f;

   public float jumpForce = 10.0f;
   public float moveSpeed = 20.0f;
   private Rigidbody rb;
   private bool isMovingForward = false;

   private void Start()
   {
       rb = GetComponent<Rigidbody>();
   }

   private void Update()
   {
       HandleCameraRotation();

       if (Input.GetKeyDown(KeyCode.Space))
       {
           Jump();
       }

       if (Input.GetKeyDown(KeyCode.UpArrow))
       {
           StartMovingForward();
       }

       if (Input.GetKeyUp(KeyCode.UpArrow))
       {
           StopMovingForward();
       }

       if (isMovingForward)
       {
           MoveForward();
       }
   }

   private void HandleCameraRotation()
   {
       if (Input.GetMouseButton(0))
       {
           yaw += rotationSpeed * Input.GetAxis("Mouse X");
           pitch -= rotationSpeed * Input.GetAxis("Mouse Y");
           Quaternion targetRotation = Quaternion.Euler(pitch, yaw, 0.0f);
           transform.rotation = Quaternion.Lerp(transform.rotation, targetRotation, Time.deltaTime * smoothRotationFactor);
       }
   }

   private void Jump()
   {
       rb.velocity = new Vector3(rb.velocity.x, rb.velocity.y + 5, rb.velocity.z);
   }

   private void StartMovingForward()
   {
       isMovingForward = true;
   }

   private void StopMovingForward()
   {
       moveSpeed = 20f;
       isMovingForward = false;
   }

   private void MoveForward()
   {
       moveSpeed += 0.1f;
       Vector3 forwardDirection = transform.forward;
       forwardDirection.y = 0.0f; // Keep movement on the horizontal plane
       rb.MovePosition(rb.position + forwardDirection * moveSpeed * Time.deltaTime);
   }
}

Ich würde mich sehr freuen wenn ihr mir helft. Danke :)

C Sharp, Code, Programmiersprache, Spieleentwicklung, Unity 3D, Visual Studio, Unity
Weirder fehler bei Unity?

hi leute, ich habe mal wieder ein problem (was war auch anderes zu erwarten...) und diesmal handelt es sich um Unity.

die sache ist die, ich habe von unity hub die version 3.5.0 und der unity editor den ich installiert habe ist version Unity 2022.3.7f1.

das tut aber leider nix zur sache, denn egal welche editor version ich nutze, der fehler ist derselbe und jedesmal aufs neue bestehend.

denn das eigentliche problem um was es geht, das mich daran hindert unity zu nutzen ist folgendes: ich öffe unity hub und erstelle ein komplett frisches projekt. ich habe keine vorherigen mehr, da ichdiese alle gelöscht habe.

dann wähle ich 3d projekt aus und warte, bis alle dateien fertig geladen und kopiert wurden (oder was da auch immer passiert) und sobald unit fertig mit laden ist wird der unity editor geöffnet (also wie gewohnt) aber das ganze sieht so aus:

es ist folgendermaßen:

ich klicke auf den x button, es lädt und kurz darauf schließt sich der editor. da einzige was offen bleibt ist der unity hub. wenn ich auf den "Quit" button klicke passiert eins zu eins der selbe mist.

wenn ich jedoch auf den "continue" button klicke lädt es kurz und das selbe erschein erneut. es ist egal wie oft ich auf continue drücke, es erscheint immer wieder dieselbe nachricht.

kennt jemand eine lösung für das problem, wenn ja dann wäre ich euch echt verbunden.

(übrigens habe ich schon versuch unity komplett zu deinstallieren und danach wier neu zu installieren aber das problem besteht noch immer.)

vielen lieben dank im voraus.

Bild zum Beitrag
Windows, C Sharp, Error, Programmiersprache, Spieleentwicklung, Unity 3D, Plattform, Message, Unity, Windows 10
Hallo ich habe ein Code in Unity wo es eine Fehlermeldung gibt die ich nicht verstehe. Könnt ihr mir helfen?

Die Fehlermeldung lautet

Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand

Fehler CS1061 "Animation" enthält keine Definition für "SetBool", und es konnte keine zugängliche SetBool-Erweiterungsmethode gefunden werden, die ein erstes Argument vom Typ "Animation" akzeptiert (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis). Assembly-CSharp C:\Users\Me\2d platform\Assets\Player.cs 27 Aktiv

Der ganze Code ist

public class Player : MonoBehaviour

{

  public float speed = 5;

  private Rigidbody2D rb;

  public float jumph = 5;

  private bool ig =false;

  private Animation anim;

  // Start is called before the first frame update

  void Start()

  {

    rb = GetComponent<Rigidbody2D>();

    anim = GetComponent<Animation>();

  }

  // Update is called once per frame

  void Update()

  {

    float richtung = Input.GetAxis("Horizontal");

    if(richtung != 0)

    {

      anim.SetBool("IsRunning", true);

    }

    else

    {

      anim.SetBool("IsRunning", false);

    }

    transform.Translate(Vector2.right * speed * richtung * Time.deltaTime);

    if (Input.GetKeyDown(KeyCode.Space) && ig)

    {

      rb.AddForce(Vector2.up * jumph, ForceMode2D.Impulse);

      ig = false;

    }

  }

  private void OnCollisionEnter2D(Collision2D collision)

  {

    if(collision.gameObject.tag == "g")

    {

      ig = true;

    }

  }

}

C Sharp, Code, Programmiersprache, Visual Studio, Unity, unity 2d
Pygame Vampire Survivors?

Hallo ich programmiere gerade ein Spiel in Pygame das dem Spiel Vampire Survivors ähnelt ich habe aktuell das problem das Problem das wenn der spieler auf die Gegner hinzu läuft die Gegener nach hinten verschoben werden staat nach vorn weil.

Also aktuell wenn ich stehe laufen die Gegner auf mich zu.

Und wenn ich von den Gegnern weg laufe werden sie aus dem Screen geschoben.

Aber wenn ich auf sie zu laufe werden sie auch aus dem Screen geschoben.

Obwohl sie dann normal laufen sollen als ob der spieler steth hier der wichtige code:   def update(self, dt, player, screen_width, screen_height):

    if not self.collided_with_enemy and self.is_visible:

      dx = player.x - self.x

      dy = player.y - self.y

      distance = max(1, pygame.math.Vector2(dx, dy).length())

      direction = pygame.math.Vector2(-dx / distance, -dy / distance)

      player_rect = pygame.Rect(player.x, player.y, player.hitbox_width, player.hitbox_height)

      enemy_rect = pygame.Rect(self.x, self.y, self.hitbox_width, self.hitbox_height)

      if player_rect.colliderect(enemy_rect):

        player.handle_collision()

        self.speed = 0

        return

      if dx != 0 and dy != 0:

        dx = 0

        dy = 0

      speed_multiplier = self.speed * dt

      if player.is_moving:

        speed_multiplier *= 0.5

      # Anpassung der Bewegungsrichtung basierend auf dem Spielerstatus

      if player.is_moving:

        self.x -= direction.x * speed_multiplier

        self.y -= direction.y * speed_multiplier

      else:

        self.x += direction.x * speed_multiplier

        self.y += direction.y * speed_multiplier

      self.x = max(-self.hitbox_width, min(self.x, screen_width))

      self.y = max(-self.hitbox_height, min(self.y, screen_height))

      self.animation_timer += dt

      if self.animation_timer >= self.animation_speed:

        self.animation_timer = 0

        self.current_frame = (self.current_frame + 1) % self.animation_frames

      # Anpassung der Geschwindigkeit basierend auf der Bewegungsrichtung des Spielers

      player_direction = pygame.math.Vector2(player.x - self.x, player.y - self.y)

      player_distance = max(1, player_direction.length())

      player_direction = player_direction.normalize()

      dot_product = player_direction.dot(direction)

      if dot_product > 0.5:

        # Spieler bewegt sich dem Gegner entgegen

        self.speed = self.original_speed + 100

      else:

        # Spieler bewegt sich vom Gegner weg

        self.speed = self.original_speed - 100

    else:

      self.x += self.direction * self.speed * dt

      self.collided_with_enemy = False

    for enemy in enemies:

      if check_enemy_collision(player, enemy):

        break

Java, JavaScript, Minecraft, C Sharp, Programmiersprache, Python, Python 3, Unity, Pygame
warum springt mein 3d Charakter ununterbrochen Unity c#?

Hallo, ich habe ein problem, und zwar möchte ich das mein 3d Charakter auf welchen man von schräg hinten schaut springt, wenn man Leertaste drückt, dies macht er auch, jedoch nachdem man einmal Leertaste gedrückt hat hört er nicht mahr auf zu springen. Vielen Dank für die hilfe schon mal im Vorraus!

Code(des Charakters):

using UnityEngine;

using System.Collections;

public class NewBehaviouerScript1 : MonoBehaviour

{

  private const float gravityMultiplier = 2;

  public float walkingSpeed = 5;

  public float jumpingSpeed = 10;

  

  private bool shouldJump;

  private bool previouslyGrounded;

  private bool hasJumped;

  private Camera targetCamera;

  private Vector2 inputVector;

  private Vector3 movingDirection = Vector3.zero;

  private CollisionFlags collisionFlags;

  private float timeSinceNotGrounded = 0;

  private void Awake()

  {

    Application.targetFrameRate = 60;

    targetCamera = GetComponentInChildren<Camera>();

  }

  private void Update()

  {

    if (shouldJump && IsGrounded() && !hasJumped)

    {

      hasJumped = true;

      shouldJump = false;

      movingDirection.y = jumpingSpeed;

    }

    if (Input.GetKeyDown(KeyCode.Space))

    {

      shouldJump = true;

    }

    if (!previouslyGrounded && IsGrounded())

    {

      previouslyGrounded = true;

      timeSinceNotGrounded = 0;

      hasJumped = false;

    }

    if (previouslyGrounded && (!IsGrounded()))

    {

      timeSinceNotGrounded += Time.deltaTime;

      if (timeSinceNotGrounded > 0.02f)

      {

        previouslyGrounded = false;

      }

    }

  }

  private void FixedUpdate()

  {

    ProcessInput();

    Vector3 desiredMove = Vector3.zero;

    if (inputVector.y > 0) // move forward

    {

      desiredMove = -transform.forward * inputVector.y;

    }

    else if (inputVector.y < 0) // move backward

    {

      desiredMove = -transform.forward * inputVector.y;

    }

    if (inputVector.x > 0) // rotate right

    {

      transform.Rotate(Vector3.up, 90 * Time.fixedDeltaTime);

    }

    else if (inputVector.x < 0) // rotate left

    {

      transform.Rotate(Vector3.up, -90 * Time.fixedDeltaTime);

    }

    RaycastHit hitInfo;

    if (Physics.Raycast(transform.position, Vector3.down, out hitInfo, 1.01f))

    {

      desiredMove = Vector3.ProjectOnPlane(desiredMove, hitInfo.normal).normalized;

    }

    movingDirection.x = desiredMove.x * walkingSpeed;

    movingDirection.z = desiredMove.z * walkingSpeed;

    if (!IsGrounded())

    {

      movingDirection += Physics.gravity * gravityMultiplier * Time.fixedDeltaTime;

    }

  

    transform.position += movingDirection * Time.fixedDeltaTime;

  }

 

  private void ProcessInput()

  {

    float horizontal = Input.GetAxis("Horizontal");

    float vertical = Input.GetAxis("Vertical");

    inputVector = new Vector2(horizontal, vertical);

    if (inputVector.sqrMagnitude > 1)

    {

      inputVector.Normalize();

    }

  }

  private bool IsGrounded()

  {

    return Physics.Raycast(transform.position, Vector3.down, 1.01f);

  }

}

Logik, Unity

Meistgelesene Beiträge zum Thema Unity