Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class CameraCollision : MonoBehaviour
- {
- public Transform referenceTransform;
- public float collisionOffset = 0.2f;
- Vector3 defaultPos;
- Vector3 directionNormalized;
- Transform parentTransform;
- float defaultDistance;
- void Start()
- {
- defaultPos = transform.localPosition;
- directionNormalized = defaultPos.normalized;
- parentTransform = transform.parent;
- defaultDistance = Vector3.Distance(defaultPos, Vector3.zero);
- }
- // FixedUpdate for physics calculations
- void FixedUpdate()
- {
- Vector3 currentPos = defaultPos;
- RaycastHit hit;
- Vector3 dirTmp = parentTransform.TransformPoint(defaultPos) - referenceTransform.position;
- if (Physics.SphereCast(referenceTransform.position, collisionOffset, dirTmp, out hit, defaultDistance))
- {
- currentPos = (directionNormalized * (hit.distance - collisionOffset));
- }
- transform.localPosition = Vector3.Lerp(transform.localPosition, currentPos, Time.deltaTime * 15f);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement