Untitled
unknown
plain_text
5 months ago
2.2 kB
1
Indexable
using UnityEngine; public class PlayerManager : MonoBehaviour { // Movement variables public float moveSpeed = 5f; public float jumpForce = 5f; private CharacterController controller; private Vector3 velocity; private bool isGrounded; // Shooting variables public Camera cam; public GameObject bulletPrefab; public Transform bulletSpawnPoint; public float bulletSpeed = 20f; void Start() { controller = GetComponent<CharacterController>(); } void Update() { HandleMovement(); HandleShooting(); } void HandleMovement() { isGrounded = controller.isGrounded; if (isGrounded && velocity.y < 0) { velocity.y = -2f; // Keep the player grounded } float moveX = Input.GetAxis("Horizontal"); float moveZ = Input.GetAxis("Vertical"); // Move the player based on input Vector3 move = transform.right * moveX + transform.forward * moveZ; controller.Move(move * moveSpeed * Time.deltaTime); // Jumping logic if (Input.GetButtonDown("Jump") && isGrounded) { velocity.y += Mathf.Sqrt(jumpForce * -2f * Physics.gravity.y); } // Apply gravity velocity.y += Physics.gravity.y * Time.deltaTime; controller.Move(velocity * Time.deltaTime); } void HandleShooting() { if (Input.GetButtonDown("Fire1")) // Left mouse button { Shoot(); } } void Shoot() { GameObject bullet = Instantiate(bulletPrefab, bulletSpawnPoint.position, bulletSpawnPoint.rotation); Rigidbody rb = bullet.GetComponent<Rigidbody>(); rb.velocity = cam.transform.forward * bulletSpeed; // Destroy the bullet after a specified time Destroy(bullet, 2f); // Adjust bullet lifetime as needed } } // Bullet behavior script public class Bullet : MonoBehaviour { void OnTriggerEnter(Collider other) { // Add damage logic here (e.g., if hitting a player) // Destroy the bullet upon collision Destroy(gameObject); } }
Editor is loading...
Leave a Comment