Я пытаюсь изменить спрайт игроков в сцене. У меня есть скрипт, который управляет сценарием, когда вы переключаетесь с плеера на другой. Я хотел бы добавить функцию, которая при переключении неактивного игрока идет черным & белый зажженный спрайтом, а активный игрок - цветным спрайтом. Может ли кто-нибудь помочь, потому что не меняет спрайт на игрока первым, а второй игрок GameObject?Изменение спрайта игрока при касании кнопки Unity 2D
Вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class switchCharacter : MonoBehaviour {
public GameObject Psyco1;
public GameObject Psyco2;
public PlayerControllerPsyco1 script1;
public PlayerControllerPsyco2 script2;
public Sprite sprite1; // Psyco1 color
public Sprite sprite2; // Psyco2 decolorized
public SpriteRenderer spriteRendererPsyco1;
public SpriteRenderer spriteRendererPsyco2;
void Start(){
script1 = Psyco1.GetComponent<PlayerControllerPsyco1>();
script2 = Psyco2.GetComponent<PlayerControllerPsyco2>();
script1.enabled = true;
script2.enabled = false;
spriteRendererPsyco1 = GetComponent<SpriteRenderer>();
spriteRendererPsyco2 = GetComponent<SpriteRenderer>();
if (spriteRendererPsyco1.sprite == null) // if the sprite on spriteRenderer is null then
spriteRendererPsyco1.sprite = sprite1; // set the sprite to Psyco1 Color
}
void Update(){
if (Input.GetButtonDown("switch1")){
script1.enabled = !script1.enabled;
script2.enabled = !script2.enabled;
//spriteRendererPsyco1.sprite = sprite2;
DesaturizePsyco(); // call method to change Psyco sprite
}
}
public void changeCharacterBtn() {
if (script1.enabled = !script1.enabled) // if the spriteRenderer sprite = sprite1 then change to sprite2
{
GameObject.Find ("PlayerFirst").GetComponent<SpriteRenderer>().sprite = sprite2;
}
//script1.enabled = !script1.enabled;
if (script2.enabled = !script2.enabled;) // if the spriteRenderer sprite = sprite1 then change to sprite2
{
GameObject.Find ("PlayerSecond").GetComponent<SpriteRenderer>().sprite = sprite1;
}
//script2.enabled = !script2.enabled;
DesaturizePsyco();
}
void DesaturizePsyco()
{
if (spriteRendererPsyco1.sprite == sprite1) // if the spriteRenderer sprite = sprite1 then change to sprite2
{
GameObject.Find ("PlayerFirst").GetComponent<SpriteRenderer>().sprite = sprite2;
}
else
{
spriteRendererPsyco1.sprite = sprite1; // otherwise change it back to sprite1
}
}
}
не ваша проблема решена? Если это так, если вы решили его использовать ответ, ответьте на вопрос, как выбрать правильный ответ. – Kardux