blob: c815fae92c5db9e465c0f1b9657ca3c648981666 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Mathematics;
using UnityEngine;
namespace DS
{
public class CameraHandler : MonoBehaviour
{
public Transform cameraTransform;
public Transform targetTransform;
public Transform cameraPivotTransform;
private Transform _myTransform;
private Vector3 _cameraTransformPosition;
private LayerMask _ignoreLayers;
private Vector3 cameraFollowVelocity = Vector3.zero;
public static CameraHandler singleton;
public float lookSpeed = 0.1f;
public float followSpeed = 0.1f;
public float pivotSpeed = 0.03f;
private float _targetPosition;
private float _defaultPosition;
private float _lookAngle;
private float _pivotAngle;
public float minimumPivot = -35;
public float maximumPivot = 35;
public float cameraSphereRadius = 0.2f;
public float cameraCollisionOffSet = 0.2f;
public float minimumCollisionOffSet = 0.2f;
private void Awake()
{
singleton = this;
_myTransform = transform;
_defaultPosition = cameraTransform.localPosition.z;
_ignoreLayers = ~(1 << 8 | 1 << 9 | 1 << 10);
}
public void FollowTarget(float delta)
{
Vector3 targetPosition = Vector3.SmoothDamp(_myTransform.position, targetTransform.position,
ref cameraFollowVelocity, delta / followSpeed);
_myTransform.position = targetPosition;
}
public void HandleCameraRotation(float delta, float mouseInputX, float mouseInputY)
{
_lookAngle += (mouseInputX * lookSpeed) / delta;
_pivotAngle -= (mouseInputY * pivotSpeed) / delta;
_pivotAngle = Mathf.Clamp(_pivotAngle, minimumPivot, maximumPivot);
Vector3 rotation = Vector3.zero;
rotation.y = _lookAngle;
Quaternion targetRotation = Quaternion.Euler(rotation);
_myTransform.rotation = targetRotation;
rotation = Vector3.zero;
rotation.x = _pivotAngle;
targetRotation = Quaternion.Euler(rotation);
cameraPivotTransform.localRotation = targetRotation;
}
}
}
|