Untitled
unknown
plain_text
a year ago
2.2 kB
5
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