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 ![]()