Unity'de, oyuncunun etkileşime girdiği nesnenin rengine bürünmek değiştirmek

Lutherieon

Centipat
Katılım
11 Ağustos 2022
Mesajlar
16
Daha fazla  
Cinsiyet
Erkek
Merhaba. Unity'ye yeni başladım ve izlediğim tutorialdaki beyefendi bir araba oyunu yapıyor.Bir videosunda araba, etkileşime girdiği kutunun(renkli puan gibi bir şey) rengine bürünüyor ben aynı şeyleri yapmama rağmen bir türlü beceremedim.

C#:
Using System. Collections;
Using System. Collections. Generic;
Using unityengine;

Public class delivery: Monobehaviour.
{
 [SerializeField] color32 haspackagecolor = New color32(255, 255, 255, 255);
 [SerializeField] color32 nopackagecolor = New color32(255, 255, 255, 255);

 [SerializeField] float destroydelay = 0.5F;
 Bool haspackage;
 Spriterenderer spriterenderer;
 Void Start()
 {
 Spriterenderer = GetComponent<SpriteRenderer>();
 }

 Void oncollisionenter2D (collision2D other)
 {
 Debug.Log ("ouch!");
 }
 Void ontriggerenter2D (collider2D other)
 {
 İf (other. Tag == "package"&&!haspackage)
 {
 Debug.Log("package picked up");
 Haspackage = true;
 Spriterenderer. Color = haspackagecolor;
 Destroy(other. Gameobject, destroydelay);

 }
 İf (other. Tag == "costumer" && haspackage)
 {
 Debug.Log("package delivered correctly.");
 Haspackage = false;
 Spriterenderer. Color = nopackagecolor;
 }
 }
}
 
Son düzenleyen: Moderatör:
Merhaba. Unity'ye yeni başladım ve izlediğim tutorialdaki beyefendi bir araba oyunu yapıyor.Bir videosunda araba, etkileşime girdiği kutunun(renkli puan gibi bir şey) rengine bürünüyor ben aynı şeyleri yapmama rağmen bir türlü beceremedim.

C#:
Using System. Collections;
Using System. Collections. Generic;
Using unityengine;

Public class delivery: Monobehaviour.
{
 [SerializeField] color32 haspackagecolor = New color32(255, 255, 255, 255);
 [SerializeField] color32 nopackagecolor = New color32(255, 255, 255, 255);

 [SerializeField] float destroydelay = 0.5F;
 Bool haspackage;
 Spriterenderer spriterenderer;
 Void Start()
 {
 Spriterenderer = GetComponent<SpriteRenderer>();
 }

 Void oncollisionenter2D (collision2D other)
 {
 Debug.Log ("ouch!");
 }
 Void ontriggerenter2D (collider2D other)
 {
 İf (other. Tag == "package"&&!haspackage)
 {
 Debug.Log("package picked up");
 Haspackage = true;
 Spriterenderer. Color = haspackagecolor;
 Destroy(other. Gameobject, destroydelay);

 }
 İf (other. Tag == "costumer" && haspackage)
 {
 Debug.Log("package delivered correctly.");
 Haspackage = false;
 Spriterenderer. Color = nopackagecolor;
 }
 }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Delivery : MonoBehaviour
{
[SerializeField] Color32 hasPackageColor = new Color32(255, 255, 255, 255);
[SerializeField] Color32 noPackageColor = new Color32(255, 255, 255, 255);

[SerializeField] float destroyDelay = 0.5f;
bool hasPackage;
SpriteRenderer spriteRenderer;

void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}

void OnCollisionEnter2D(Collision2D other)
{
Debug.Log("Ouch!");
}

void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "package" && !hasPackage)
{
Debug.Log("Package picked up");
hasPackage = true;
spriteRenderer.color = hasPackageColor;
Destroy(other.gameObject, destroyDelay);
}

if (other.tag == "customer" && hasPackage)
{
Debug.Log("Package delivered correctly.");
hasPackage = false;
spriteRenderer.color = noPackageColor;
}
}
}



Bunu dener misin
 
Aslında böyle yazmıştım ama technopatın yazım düzeltimini kullandığım için büyük küçük harfte sıkıntı olmuş.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Delivery : MonoBehaviour
{
[SerializeField] Color32 hasPackageColor = new Color32(255, 255, 255, 255);
[SerializeField] Color32 noPackageColor = new Color32(255, 255, 255, 255);

[SerializeField] float destroyDelay = 0.5f;
bool hasPackage;
SpriteRenderer spriteRenderer;

void Start()
{
spriteRenderer = GetComponent<SpriteRenderer>();
}

void OnCollisionEnter2D(Collision2D other)
{
Debug.Log("Ouch!");
}

void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "package" && !hasPackage)
{
Debug.Log("Package picked up");
hasPackage = true;
spriteRenderer.color = hasPackageColor;
Destroy(other.gameObject, destroyDelay);
}

if (other.tag == "customer" && hasPackage)
{
Debug.Log("Package delivered correctly.");
hasPackage = false;
spriteRenderer.color = noPackageColor;
}
}
}



Bunu dener misin
 
2 renk tanımı da aynı. Tagin doğruluğunu kontrol et. Collider2D.tag'in nasıl kontrol çalıştırdığını hatırlamıyorum bayadır uğraşmıyorum. CompareTag kullanabilirsin. Ama sanırım durum 2 renginde aynı renk olması.
 

Geri
Yukarı