8. Kurs Unity - Niszczenie obiektów (Destroy) oraz zmiana koloru

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ธ.ค. 2024

ความคิดเห็น • 19

  • @autordoczesny4448
    @autordoczesny4448 3 ปีที่แล้ว +6

    Kozakiem jesteś ;)

  • @Kiolesis
    @Kiolesis 3 ปีที่แล้ว +4

    Komentarz dla zasięgu! 😁

  • @szymon2442
    @szymon2442 2 ปีที่แล้ว +1

    Mam pewien problem, po skopiowaniu cuba i zmianie life tego skopiowanego cuba zmienia mi się kolor obydwóch cubów na ten sam. Natomiast life w oryginalnym cubie jest taki jak był na początku. Po odpaleniu gry wszystko sie zgadza, tylko w edytorze tak to działa.

    • @KoW
      @KoW  2 ปีที่แล้ว

      Wynika to ze współdzielenia materiału w podglądzie sceny. Dla oszczędności miejsca jest to 1 materiał referencyjny, trzeba dostać się z kodu do tego materiału i wyłączyć współdzielenie referencji, poszukaj w Google ;)

    • @dawidmalik5467
      @dawidmalik5467 2 ปีที่แล้ว

      @@KoW Przypisując materiał z pola "material", edytor poza komunikatem o błędzie, tworzy instancję materiału. Gdy następnie przypiszemy materiał z "sharedMaterial" błędu nie ma, ale materiały nadal są instancjami. Jeśli usunę materiał wszystkim sześcianom i dodam ponownie, to przy zmianie żyć zmienia się kolor wszystkich sześcianów, które korzystają z tego materiału.

    • @scorpion1982a
      @scorpion1982a 8 หลายเดือนก่อน

      Ja mam u siebie ten kod tak i śmiga:
      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      public class DestructBox : MonoBehaviour
      {
      public Color startColor;
      public Color endColor;
      public int life;
      public bool isRigidbody = false;
      private Material material;
      private int maxlife = 3;
      private Rigidbody rb;
      void Start()
      {
      life = Mathf.Clamp(life, 1, maxlife);

      material = Application.isPlaying ? GetComponent().material : new Material(GetComponent().sharedMaterial);
      // Ustaw kolor
      SetColor();
      if (isRigidbody)
      {
      rb = gameObject.AddComponent();
      rb.interpolation = RigidbodyInterpolation.Interpolate;
      rb.collisionDetectionMode = CollisionDetectionMode.Continuous;
      rb.mass = 0.75f;
      }
      }
      private void OnCollisionEnter(Collision collision)
      {
      if (collision.gameObject.CompareTag("Player"))
      {
      life--;
      if (life > 0)
      {
      SetColor();
      }
      else
      {
      Destroy(this.gameObject);
      }
      }
      }
      void SetColor()
      {
      if (material != null) // Sprawdź, czy materiał został już ustawiony
      {
      material.color = Color.Lerp(endColor, startColor, (float)(life - 1) / (float)(maxlife - 1));
      }
      }
      private void OnValidate()
      {
      if (GetComponent() != null) // Sprawdź, czy MeshRenderer został już ustawiony
      {
      material = GetComponent().sharedMaterial;
      SetColor();
      }
      }
      }

  • @SpodCiemnejGwiazdy
    @SpodCiemnejGwiazdy 3 ปีที่แล้ว

    Siemka! Śledzę Twój kurs C# od dłuższego czasu i bardzo mi pomogłeś. Pracuje na IOS co jest troszkę utrudnieniem ale daje radę. Czy mógłbyś zrobić kurs z .Net.Core i MVC ? Nigdzie tego nie ma w miarę aktualnego a sprawa dość przydatna. Pozdrawiam :D

  • @patrykp1628
    @patrykp1628 ปีที่แล้ว

    100% - 33% = 67% a nie 77% 😁

    • @KoW
      @KoW  ปีที่แล้ว +1

      🫣

  • @jabublu358
    @jabublu358 2 ปีที่แล้ว

    16:10 Color to struktura, nie klasa. Z pozoru mały błąd a czasem wiele zamieszania może zrobić

    • @KoW
      @KoW  2 ปีที่แล้ว

      Masz rację