Unity 3D (Walk & Run & Jump & Crouch)

Endarion

Katılımcı Üye
29 Ağu 2021
890
519
Righteous Side of Hell
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{
    public float walkSpeed = 5f;
    public float runSpeed = 10f;
    public float jumpForce = 5f;
    public float mouseSensitivity = 2f;

    private float currentSpeed;
    private float xRotation = 0f;
    private CharacterController controller;
    private Vector3 moveDirection = Vector3.zero;
    private bool isJumping = false;
    private bool isCrouching = false;

    private void Start()
    {
        controller = GetComponent<CharacterController>();
        Cursor.lockState = CursorLockMode.Locked;
        currentSpeed = walkSpeed;
    }

    private void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;

        transform.Rotate(Vector3.up * mouseX);

        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);
        Camera.main.transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);

        bool isRunning = Input.GetKey(KeyCode.LeftShift);
        bool isCrouchButtonPressed = Input.GetKey(KeyCode.C);

        if (isCrouchButtonPressed && !isCrouching)
        {
            isCrouching = true;
            controller.height /= 2f;
        }
        else if (!isCrouchButtonPressed && isCrouching)
        {
            isCrouching = false;
            controller.height *= 2f;
        }

        currentSpeed = isRunning && !isCrouching ? runSpeed : walkSpeed;

        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");

        if (controller.isGrounded)
        {
            moveDirection = transform.right * horizontalInput + transform.forward * verticalInput;
            moveDirection *= currentSpeed;

            if (Input.GetButtonDown("Jump"))
            {
                moveDirection.y = jumpForce;
                isJumping = true;
            }
        }

        moveDirection.y -= 9.8f * Time.deltaTime;
        controller.Move(moveDirection * Time.deltaTime);

        if (controller.isGrounded && isJumping)
        {
            isJumping = false;
        }
    }
}
 

rootibo

Kıdemli Üye
13 Mar 2023
2,168
1,459
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Move : MonoBehaviour
{
    public float walkSpeed = 5f;
    public float runSpeed = 10f;
    public float jumpForce = 5f;
    public float mouseSensitivity = 2f;

    private float currentSpeed;
    private float xRotation = 0f;
    private CharacterController controller;
    private Vector3 moveDirection = Vector3.zero;
    private bool isJumping = false;
    private bool isCrouching = false;

    private void Start()
    {
        controller = GetComponent<CharacterController>();
        Cursor.lockState = CursorLockMode.Locked;
        currentSpeed = walkSpeed;
    }

    private void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;

        transform.Rotate(Vector3.up * mouseX);

        xRotation -= mouseY;
        xRotation = Mathf.Clamp(xRotation, -90f, 90f);
        Camera.main.transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);

        bool isRunning = Input.GetKey(KeyCode.LeftShift);
        bool isCrouchButtonPressed = Input.GetKey(KeyCode.C);

        if (isCrouchButtonPressed && !isCrouching)
        {
            isCrouching = true;
            controller.height /= 2f;
        }
        else if (!isCrouchButtonPressed && isCrouching)
        {
            isCrouching = false;
            controller.height *= 2f;
        }

        currentSpeed = isRunning && !isCrouching ? runSpeed : walkSpeed;

        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");

        if (controller.isGrounded)
        {
            moveDirection = transform.right * horizontalInput + transform.forward * verticalInput;
            moveDirection *= currentSpeed;

            if (Input.GetButtonDown("Jump"))
            {
                moveDirection.y = jumpForce;
                isJumping = true;
            }
        }

        moveDirection.y -= 9.8f * Time.deltaTime;
        controller.Move(moveDirection * Time.deltaTime);

        if (controller.isGrounded && isJumping)
        {
            isJumping = false;
        }
    }
}
Eline saglik
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.