Need help with camera collision !

Hey i need some help with camera collision i can’t get anything to work !

here is my character /camera controller script :

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

public class PlayerCharacterController : MonoBehaviour
{

    Animator anim;

    public Transform playerCam, character, centerPoint;
    CharacterController player;
   
    float cameraDistance  = 10.0f;

    private float mouseX, mouseY;
    public float mouseSensitivity = 10f;
    public float mouseYposition = 1f;

    public int jumpTimes;
    public float jumpDist = 5f;

    private float moveFB, moveLR;
    public float moveSpeed = 4f;

    private float zoom;
    public float zoomSpeed = 2;

    public float zoomMin = -2f;
    public float zoomMax = -10f;
   
    public float rotationSpeed = 5f;
    float vertVelocity;


    // Use this for initialization
    void Start()
    {
        anim = GetComponent<Animator>();
        player = GetComponent<CharacterController>();
        zoom = -3;
    }

    // Update is called once per frame
    void Update()
    {

     

        zoom += Input.GetAxis("Mouse ScrollWheel") * zoomSpeed;

        if (zoom > zoomMin)
        {
            zoom = zoomMin;
        }
        if (zoom < zoomMax)
        {
            zoom = zoomMax;
        }
        playerCam.transform.localPosition = new Vector3(0, 0, zoom);

        if (Input.GetMouseButton(1))
        {
            mouseX += Input.GetAxis("Mouse X")*mouseSensitivity;
            mouseY -= Input.GetAxis("Mouse Y")*mouseSensitivity;
        }
        mouseY = Mathf.Clamp(mouseY, -60f, 60f);
        playerCam.LookAt(centerPoint);
        centerPoint.localRotation = Quaternion.Euler(mouseY, mouseX, 0);
       
        moveFB = Input.GetAxis("Vertical") * moveSpeed;
        moveLR = Input.GetAxis("Horizontal") * moveSpeed;
        Vector3 movement = new Vector3(moveLR, vertVelocity, moveFB);
        movement = transform.rotation * movement;
        anim.SetFloat("VelocityX",moveFB );
        anim.SetFloat("VelocityZ", moveLR);
        player.Move(movement * Time.deltaTime);
        centerPoint.position = new Vector3(character.position.x, character.position.y + mouseYposition, character.position.z);



        if (PlayerStats.life== 0) {
            moveSpeed = 0;
        }

       

        if (player.isGrounded == true)
        {
            jumpTimes = 0;
        }

        if (jumpTimes < 1)
        {
            if (Input.GetButtonDown("Jump"))
            {
                vertVelocity += jumpDist;
                jumpTimes += 1;
            }
        }

        if (Input.GetAxis("Vertical") > 0 || Input.GetAxis("Vertical") > 0)
        {
            Quaternion turnAngle = Quaternion.Euler(0, centerPoint.eulerAngles.y, 0);
            character.rotation = Quaternion.Slerp(character.rotation, turnAngle, Time.deltaTime * rotationSpeed*3);
        }
    }
    void FixedUpdate()
    {
        if (player.isGrounded == false)
        {
            vertVelocity += Physics.gravity.y * Time.deltaTime;
        }
        else
        {
            vertVelocity = 0f;
        }
      
    }

    void Death ()
    {
        Time.timeScale = 0;
   
    }

}

is it even possible to add a collision handler to this ?

thanks in advance :slight_smile:

Sure. Just use OnCollisionEnter:

Make sure that whatever script you have your OnCollisionEnter function in is attached to the same game object that has a collider on it.