aboutsummaryrefslogtreecommitdiff
path: root/Assets/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts')
-rw-r--r--Assets/Scripts/CineCamera.cs28
-rw-r--r--Assets/Scripts/CineCamera.cs.meta11
-rw-r--r--Assets/Scripts/Movement.cs51
-rw-r--r--Assets/Scripts/Movement.cs.meta11
-rw-r--r--Assets/Scripts/PhysGun.cs126
-rw-r--r--Assets/Scripts/PhysGun.cs.meta11
-rw-r--r--Assets/Scripts/Selector.cs29
-rw-r--r--Assets/Scripts/Selector.cs.meta11
8 files changed, 278 insertions, 0 deletions
diff --git a/Assets/Scripts/CineCamera.cs b/Assets/Scripts/CineCamera.cs
new file mode 100644
index 0000000..0a38fe3
--- /dev/null
+++ b/Assets/Scripts/CineCamera.cs
@@ -0,0 +1,28 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class CineCamera : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ //Spawns camera
+ if (Input.GetKeyDown(KeyCode.Mouse0))
+ {
+
+ }
+
+ //Switches to camera view
+ if (Input.GetKeyDown(KeyCode.Delete))
+ {
+
+ }
+ }
+}
diff --git a/Assets/Scripts/CineCamera.cs.meta b/Assets/Scripts/CineCamera.cs.meta
new file mode 100644
index 0000000..e836c96
--- /dev/null
+++ b/Assets/Scripts/CineCamera.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7718b950bcd0d2919b3e063a4d7afa73
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Movement.cs b/Assets/Scripts/Movement.cs
new file mode 100644
index 0000000..43458d8
--- /dev/null
+++ b/Assets/Scripts/Movement.cs
@@ -0,0 +1,51 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Movement : MonoBehaviour
+{
+ //Code taken from UMod
+ public float MoveSpeed = 4f;
+ public float MouseSensitivity = 1f;
+ public float MoreSpeed = 10f;
+ public bool yLock = false;
+ private float fastSpeed;
+ private bool sprint = false;
+
+ // Start is called before the first frame update
+ void Start()
+ {
+ Cursor.lockState = CursorLockMode.Locked;
+ fastSpeed = MoveSpeed;
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ var mouseX = Input.GetAxisRaw("Mouse X");
+ var mouseY = -Input.GetAxisRaw("Mouse Y");
+ var rot = Camera.main.transform.eulerAngles;
+ var rotationVector = new Vector3(mouseY, mouseX, 0);
+ rot += rotationVector * MouseSensitivity;
+ Camera.main.transform.rotation = Quaternion.Euler(rot);
+ if (Input.GetKeyDown(KeyCode.LeftShift))
+ {
+ fastSpeed = MoveSpeed + MoreSpeed;
+ }
+
+ if (Input.GetKeyUp(KeyCode.LeftShift))
+ {
+ fastSpeed = MoveSpeed;
+ }
+ var sideMove = Input.GetAxisRaw("Horizontal");
+ var forwardMove = Input.GetAxisRaw("Vertical");
+ var moveVector = new Vector3(sideMove, 0, forwardMove) * fastSpeed;
+ moveVector = Camera.main.transform.TransformDirection(moveVector);
+ if (yLock == true)
+ {
+ moveVector.y = 0;
+ }
+
+ transform.Translate(moveVector * Time.deltaTime);
+ }
+}
diff --git a/Assets/Scripts/Movement.cs.meta b/Assets/Scripts/Movement.cs.meta
new file mode 100644
index 0000000..2c361bd
--- /dev/null
+++ b/Assets/Scripts/Movement.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 744b5e672e53193a5aef94319457c48b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/PhysGun.cs b/Assets/Scripts/PhysGun.cs
new file mode 100644
index 0000000..5a00a1a
--- /dev/null
+++ b/Assets/Scripts/PhysGun.cs
@@ -0,0 +1,126 @@
+using UnityEngine;
+//Code is taken from UMod
+public class PhysGun : MonoBehaviour
+{
+ [SerializeField]
+ private float _maxGrabDistance = 40f;
+ [SerializeField]
+ private float _minGrabDistance = 1f;
+ [SerializeField]
+ private LineRenderer _pickLine;
+ [SerializeField]
+ private Transform _barrelPoint;
+
+ private Rigidbody _grabbedObject;
+ private float _pickDistance;
+ private Vector3 _pickOffset;
+ private Vector3 _pickTargetPosition;
+ private Vector3 _pickForce;
+
+ private void Start()
+ {
+ if (!_barrelPoint)
+ {
+ _barrelPoint = transform;
+ }
+ if (!_pickLine)
+ {
+ var obj = new GameObject("PhysGun Pick Line");
+ _pickLine = obj.AddComponent<LineRenderer>();
+ _pickLine.startWidth = 0.02f;
+ _pickLine.endWidth = 0.02f;
+ _pickLine.useWorldSpace = true;
+ _pickLine.gameObject.SetActive(false);
+ }
+ }
+
+ void Update()
+ {
+ if (Input.GetKeyDown(KeyCode.Mouse0))
+ {
+ Grab();
+ }
+
+ if (Input.GetKeyUp(KeyCode.Mouse0))
+ {
+ if (_grabbedObject)
+ {
+ Release();
+ }
+ }
+
+ if (Input.GetKeyDown(KeyCode.Mouse1))
+ {
+ if (_grabbedObject)
+ {
+ Release(true);
+ }
+ }
+
+ _pickDistance = Mathf.Clamp(_pickDistance + Input.mouseScrollDelta.y, _minGrabDistance, _maxGrabDistance);
+ }
+
+ private void LateUpdate()
+ {
+ if (_grabbedObject)
+ {
+ var midpoint = (transform.position + _pickTargetPosition) / 2f;
+ midpoint += Vector3.ClampMagnitude(_pickForce / 2f, 1f);
+ DrawQuadraticBezierCurve(_pickLine, _barrelPoint.position, midpoint, _grabbedObject.worldCenterOfMass - _pickOffset);
+ }
+ }
+
+ private void FixedUpdate()
+ {
+ if (_grabbedObject != null)
+ {
+ var ray = Camera.main.ViewportPointToRay(Vector3.one * .5f);
+ _pickTargetPosition = (ray.origin + ray.direction * _pickDistance) + _pickOffset;
+ var forceDir = _pickTargetPosition - _grabbedObject.position;
+ _pickForce = forceDir / Time.fixedDeltaTime * 0.3f / _grabbedObject.mass;
+ _grabbedObject.velocity = _pickForce;
+ }
+ }
+
+ private void Grab()
+ {
+ var ray = Camera.main.ViewportPointToRay(Vector3.one * .5f);
+ if(Physics.Raycast(ray, out RaycastHit hit, _maxGrabDistance)
+ && hit.rigidbody != null)
+ {
+ _pickOffset = hit.rigidbody.worldCenterOfMass - hit.point;
+ _pickDistance = hit.distance;
+ _grabbedObject = hit.rigidbody;
+ _grabbedObject.collisionDetectionMode = CollisionDetectionMode.Continuous;
+ _grabbedObject.useGravity = false;
+ _grabbedObject.freezeRotation = true;
+ _grabbedObject.isKinematic = false;
+ _pickLine.gameObject.SetActive(true);
+ }
+ }
+
+ private void Release(bool setKinematic = false)
+ {
+ _grabbedObject.collisionDetectionMode = CollisionDetectionMode.Discrete;
+ _grabbedObject.useGravity = true;
+ _grabbedObject.freezeRotation = false;
+ _grabbedObject.isKinematic = setKinematic;
+ _grabbedObject = null;
+ _pickLine.gameObject.SetActive(false);
+ }
+
+ // https://www.codinblack.com/how-to-draw-lines-circles-or-anything-else-using-linerenderer/
+ void DrawQuadraticBezierCurve(LineRenderer line, Vector3 point0, Vector3 point1, Vector3 point2)
+ {
+ line.positionCount = 10;
+ float t = 0f;
+ Vector3 B = new Vector3(0, 0, 0);
+ for (int i = 0; i < line.positionCount; i++)
+ {
+ B = (1 - t) * (1 - t) * point0 + 2 * (1 - t) * t * point1 + t * t * point2;
+ line.SetPosition(i, B);
+ t += (1 / (float)line.positionCount);
+ }
+ }
+
+}
diff --git a/Assets/Scripts/PhysGun.cs.meta b/Assets/Scripts/PhysGun.cs.meta
new file mode 100644
index 0000000..b1cb9b9
--- /dev/null
+++ b/Assets/Scripts/PhysGun.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b42fff37c3b725baa9ddfb47a9c2cd91
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Selector.cs b/Assets/Scripts/Selector.cs
new file mode 100644
index 0000000..e59d3ea
--- /dev/null
+++ b/Assets/Scripts/Selector.cs
@@ -0,0 +1,29 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Selector : MonoBehaviour
+{
+ public GameObject physGun;
+
+ private bool oneSelected = false;
+ // Update is called once per frame
+ void Update()
+ {
+ if (Input.GetKeyDown(KeyCode.Alpha1))
+ {
+ if (oneSelected == false)
+ {
+ physGun.SetActive(true);
+ oneSelected = true;
+ Debug.Log("PhysGun selected");
+ }
+ else
+ {
+ physGun.SetActive(false);
+ oneSelected = false;
+ Debug.Log("PhysGun deselected");
+ }
+ }
+ }
+}
diff --git a/Assets/Scripts/Selector.cs.meta b/Assets/Scripts/Selector.cs.meta
new file mode 100644
index 0000000..f87d88a
--- /dev/null
+++ b/Assets/Scripts/Selector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ccbfba6c2492fb763a9ff2f97a620ca7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: