Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Missing Bracket

Discussion in 'Scripting' started by unity_qsk2Hk5TezRikw, Jan 21, 2021.

  1. unity_qsk2Hk5TezRikw

    unity_qsk2Hk5TezRikw

    Joined:
    Jan 21, 2021
    Posts:
    1
    I am trying to make a c# game for my code but it keeps telling me that "Assets\Walk.cs(16,28): error S1513: } expected".

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class Walk : MonoBehaviour
    {
    // Start is called before the first frame update
    void Start()
    {

    }
    // Update is called once per frame
    void Update()
    {
    int moveSpeed = 10;
    private spriteRenderer SpriteRenderer;
    if (Input.GetButton("GoRight"))
    {
    transform.position += Vector3.right * moveSpeed * Time.deltaTime;
    spriteRenderer.flipX = false;
    }
    else if (Input.GetButton("GoLeft"))
    {
    transform.position += Vector3.right * -moveSpeed * Time.deltaTime;
    spriteRenderer.flipX = true;
    }
    }
    }
     
  2. Sphinks

    Sphinks

    Joined:
    Apr 6, 2019
    Posts:
    267
    looks like something mixed up in your script

    you can´t call something like "private spriteRenderer SpriteRenderer;" in a method.

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. public class Walk : MonoBehaviour
    5. {
    6.     private spriteRenderer SpriteRenderer;
    7.  
    8.     // Start is called before the first frame update
    9.     void Start()
    10.     {
    11.  
    12.     }
    13.  
    14.     // Update is called once per frame
    15.     void Update()
    16.     {
    17.         int moveSpeed = 10;
    18.         if (Input.GetButton("GoRight"))
    19.         {
    20.             transform.position += Vector3.right * moveSpeed * Time.deltaTime;
    21.             spriteRenderer.flipX = false;
    22.         }
    23.         else if (Input.GetButton("GoLeft"))
    24.         {
    25.             transform.position += Vector3.right * -moveSpeed * Time.deltaTime;
    26.             spriteRenderer.flipX = true;
    27.         }
    28.     }
    29. }
    And please use code tags next time.
     
  3. Omniglitch

    Omniglitch

    Joined:
    May 29, 2017
    Posts:
    37
    Try this:

    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. public class Walk : MonoBehaviour
    5. {
    6.     private SpriteRenderer spriteRenderer;
    7.     // Start is called before the first frame update
    8.     void Start()
    9.     {
    10.          spriteRenderer = GetComponent<SpriteRenderer>();
    11.      }
    12.      // Update is called once per frame
    13.     void Update()
    14.     {
    15.         int moveSpeed = 10;
    16.         if (Input.GetButton("GoRight"))
    17.         {
    18.             transform.position += Vector3.right * moveSpeed * Time.deltaTime;
    19.             spriteRenderer.flipX = false;
    20.         }
    21.         else if (Input.GetButton("GoLeft"))
    22.         {
    23.             transform.position += Vector3.right * -moveSpeed * Time.deltaTime;
    24.             spriteRenderer.flipX = true;
    25.         }
    26.     }
    27. }
    The first problem I noticed was that when you defined the variable spriteRenderer, the data type (SpriteRenderer with a capital S) needs to be to the left of the variable name "spriteRenderer".

    That variable then needs to store a reference to the SpriteRenderer component on the game object, which is done by the line I put into the Start() function.