Search Unity

Script Error for Jumping Mechanic

Discussion in 'Scripting' started by thebanman, Apr 17, 2021.

  1. thebanman

    thebanman

    Joined:
    Mar 20, 2021
    Posts:
    13
    I got this error after trying to add a jumping system: Assets/Scripts/PlayerController.cs(135,49): error CS1026: ) expected, and I can't find the error in my code. (I'll Bold the jumping code)

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class PlayerController : MonoBehaviour
    {
    [SerializeField] Transform playerCamera = null;
    [SerializeField] float mouseSensitivity = 3.5f;
    [SerializeField] bool lockCursor = true;
    [SerializeField] float walkSpeed = 6.0f;
    [SerializeField] [Range(0.0f, 0.5f)] float moveSmoothTime = 0.3f;
    [SerializeField] [Range(0.0f, 0.5f)] float mouseSmoothTime = 0.03f;
    [SerializeField] float gravity = -13.0f;
    [SerializeField] float dashSpeed = 4.5f;
    [SerializeField] float jumph = 4f;
    [SerializeField] float jumpforce = 2f;


    private Rigidbody rigidBody;
    private Vector3 jump;

    CharacterController controller = null;
    float cameraPitch = 0.0f;
    float velocityY = 0.0f;
    Vector2 currentDir = Vector2.zero;
    Vector2 currentDirVelocity = Vector2.zero;
    Vector2 currentMouseDelta = Vector2.zero;
    Vector2 currentMouseDeltaVelocity = Vector2.zero;

    //Wallrunning
    public LayerMask whatIsWall;
    public float wallrunforce, maxWallrunTime, maxWallSpeed;
    bool isWallRight, isWallLeft;
    bool isWallRunning;
    public float maxWallRunCameraTilt, wallRunCameraTilt;
    public transform orientation;


    private void WallRunInput()
    {
    //StartWallrun
    if (Input.GetKey(KeyCode.D) && isWallRight) StartWallRun();
    if (Input.GetKey(KeyCode.A) && isWallLeft) StartWallRun();

    if(rigidBody.velocity.magnitude <= maxWallSpeed)
    {
    rigidBody.AddForce(orientation.foward * wallrunforce * Time.deltaTime);

    //Character Stick to Wall
    if (isWallRight)
    rigidBody.AddForce(orientation.right * wallrunforce / 5 * Time.deltaTime);
    else
    rigidBody.AddForce(-orientation.right * wallrunforce / 5 * Time.deltaTime);
    }
    }

    private void StartWallRun()
    {
    rigidBody.useGravity = false;
    isWallRunning = true;
    }

    private void StopWallRun()
    {
    rigidBody.useGravity = true;
    isWallRunning = false;
    }

    private void CheckForWall()
    {
    isWallRight = Physics.Raycast(transform.position, orientation.right, 1f, whatIsWall);
    isWallLeft = Physics.Raycast(transform.position, -orientation.right, 1f, whatIsWall);

    //Leave Wallrun
    if (!isWallRight && !isWallLeft) StopWallRun();
    }

    void Start()
    {
    jump = new Vector3(0f, jumph, 0f);
    rigidBody = GetComponent<Rigidbody>();

    controller = GetComponent<CharacterController>();
    if (lockCursor)
    {
    Cursor.lockState = CursorLockMode.Locked;
    Cursor.visible = false;
    }
    }

    void Update()
    {
    UpdateMouseLook();
    UpdateMovement();
    CheckForWall();
    WallRunInput();
    }

    void UpdateMouseLook()
    {
    Vector2 targetMouseDelta = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));

    currentMouseDelta = Vector2.SmoothDamp(currentMouseDelta, targetMouseDelta, ref currentMouseDeltaVelocity, mouseSmoothTime);

    cameraPitch -= currentMouseDelta.y * mouseSensitivity;
    cameraPitch = Mathf.Clamp(cameraPitch, -90.0f, 90.0f);

    playerCamera.localEulerAngles = Vector3.right * cameraPitch;

    transform.Rotate(Vector3.up * currentMouseDelta.x * mouseSensitivity);
    }

    void UpdateMovement()
    {
    Vector2 targetDir = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
    targetDir.Normalize();

    currentDir = Vector2.SmoothDamp(currentDir, targetDir, ref currentDirVelocity, moveSmoothTime);

    if (controller.isGrounded)
    velocityY = 0.0f;

    velocityY += gravity * Time.deltaTime;

    Vector3 velocity = (transform.forward * currentDir.y + transform.right * currentDir.x) * walkSpeed + Vector3.up * velocityY;

    controller.Move(velocity * Time.deltaTime);

    if (Input.GetKeyDown(KeyCode.E))
    {
    currentDir.y = dashSpeed;
    }

    if(rigidBody.velocity.y == 0)
    {
    if (Input(GetKeyDown(KeyCode.Space))
    {
    rigidBody.AddForce(jump * jumpforce, ForceMode.Impulse);
    }
    }

    }
    }
     
  2. Kurt-Dekker

    Kurt-Dekker

    Joined:
    Mar 16, 2013
    Posts:
    38,689
    If you post a code snippet, ALWAYS USE CODE TAGS:

    How to use code tags: https://forum.unity.com/threads/using-code-tags-properly.143875/

    The important parts of an error message are:
    - the description of the error itself
    - the file it occurred in
    - the line number and character position.

    All of that information is in the actual error message and you must pay attention to it. Learn how to identify it instantly.

    How to understand compiler and other errors and even fix them yourself:

    https://forum.unity.com/threads/ass...3-syntax-error-expected.1039702/#post-6730855

    How to report your problem productively in the Unity3D forums:

    http://plbm.com/?p=220
     
  3. thebanman

    thebanman

    Joined:
    Mar 20, 2021
    Posts:
    13
    thanks for the links it helped me a lot
     
    Kurt-Dekker likes this.