Unity – die neusten Beiträge

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

Meistgelesene Beiträge zum Thema Unity