Merhabalar,
Unity ile FPS bir oyun geliştirmek istediğinizde ilk aşamalar aynı oluyor ve bu da her defasında aynı kodları yazmamıza neden oluyor diye Youtuber “Brackeys” abimizin bu güzel tutorialinden aldığım kısımları buraya atmak istedim (ufak değişiklikler olabilir).
oyuncuyu sağa sola ve ileri geri hareket ettirebilmemiz için önceden belirlediğimiz “Horizontal” ve “Vertical” tuşlarıyla; player prefabımızda olan script:
public CharacterController characterController; public float jumpSpeed = 1.6f; public float speed = 6.0f; public float gravity = 9.81f; private Vector3 move = Vector3.zero; void Start() { characterController = GetComponent<CharacterController>(); } void Update() { float x = Input.GetAxis("Horizontal"); float z = Input.GetAxis("Vertical"); if (characterController.isGrounded) { move = transform.right * x + transform.forward * z; if (Input.GetButton("Jump")) { move.y = jumpSpeed; } } move.y -= gravity * Time.deltaTime; characterController.Move(move * speed * Time.deltaTime); }
Player prefabında bulunan camera objesinin hareketini mouse ile döndermek için ise:
public float mouseSensivity = 100f; public Transform playerBody; float xRotation = 0f; void Update() { float mouseX = Input.GetAxis("Mouse X") * mouseSensivity * Time.deltaTime; float mouseY = Input.GetAxis("Mouse Y") * mouseSensivity * Time.deltaTime; xRotation -= mouseY; xRotation = Mathf.Clamp(xRotation, -90f, 90f);//sınırlama getirir. transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f); playerBody.Rotate(Vector3.up * mouseX); }
Bir yanıt yazın