Modifier l'image-objet d'un objet dans Unity

11

A l'intérieur du code script du héros (objet) je veux ajouter la possibilité de changer son sprite.

Ainsi, le joueur frappe le bouton d'espace et le sprite se transforme en l'autre sprite déjà ajouté au projet.

Pouvez-vous me fournir un exemple de code pour ce faire?

Fab
la source
1
Bien que la fonction pour changer les sprites ci-dessous devrait fonctionner exactement comme vous l'avez demandé, je vous suggère de regarder dans l'animateur Unity. Habituellement, lorsque les gens changent de sprites, c'est pour créer une animation pour une action (comme balancer une épée ou ouvrir une porte) et cela se fait généralement dans des moteurs plus basiques en échangeant les sprites manuellement. Unity a cependant intégré la prise en charge des animations vous permettant de créer un fichier d'animation pour tous les sprites nécessaires, puis de dire au jeu de les jouer automatiquement en fonction de certaines conditions dans le contrôleur d'animation.
Benjamin Danger Johnson

Réponses:

20

Le code a été commenté pour vous. Prendre plaisir.

public Sprite sprite1; // Drag your first sprite here
public Sprite sprite2; // Drag your second sprite here

private SpriteRenderer spriteRenderer; 

void Start ()
{
    spriteRenderer = GetComponent<SpriteRenderer>(); // we are accessing the SpriteRenderer that is attached to the Gameobject
    if (spriteRenderer.sprite == null) // if the sprite on spriteRenderer is null then
        spriteRenderer.sprite = sprite1; // set the sprite to sprite1
}

void Update ()
{
    if (Input.GetKeyDown (KeyCode.Space)) // If the space bar is pushed down
    {
        ChangeTheDamnSprite (); // call method to change sprite
    }
}

void ChangeTheDamnSprite ()
{
    if (spriteRenderer.sprite == sprite1) // if the spriteRenderer sprite = sprite1 then change to sprite2
    {
        spriteRenderer.sprite = sprite2;
    }
    else
    {
        spriteRenderer.sprite = sprite1; // otherwise change it back to sprite1
    }
}

Vous devez avoir un rendu de sprite attaché à votre GameObject. Créez un nouveau script C # et attachez-y un GameObject. Collez le code entre les parenthèses ... Je suis sûr que vous pouvez le comprendre à partir de là :)

Savlon
la source
vous monsieur, êtes une légende.
kal kokah