diff options
author | chai <chaifix@163.com> | 2022-01-25 20:39:12 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2022-01-25 20:39:12 +0800 |
commit | 3916a752be8ec99f5a03ba71be2bb3ff7b425b3a (patch) | |
tree | 6c556d22521bfa6f660c5809d1561a9d89fba01d /JamTools/Assets/JamTools/Scripts |
+init
Diffstat (limited to 'JamTools/Assets/JamTools/Scripts')
16 files changed, 456 insertions, 0 deletions
diff --git a/JamTools/Assets/JamTools/Scripts/Character.meta b/JamTools/Assets/JamTools/Scripts/Character.meta new file mode 100644 index 0000000..2ab61ed --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Character.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 33fb2087c14c1bb44aea949d2e0803fc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/Character/CameraFollow.cs b/JamTools/Assets/JamTools/Scripts/Character/CameraFollow.cs new file mode 100644 index 0000000..79a535b --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Character/CameraFollow.cs @@ -0,0 +1,34 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace JamTools
+{
+
+ [RequireComponent(typeof(Camera))]
+ public class CameraFollow : MonoBehaviour
+ {
+ [SerializeField] private Transform m_Target;
+
+ [SerializeField] private Vector3 m_Offset;
+
+ private Camera m_Camera;
+
+ private void Awake()
+ {
+ m_Camera = GetComponent<Camera>();
+ }
+
+ void Start()
+ {
+
+ }
+
+ void Update()
+ {
+ m_Camera.transform.position = m_Target.position;
+ m_Camera.transform.rotation = m_Target.rotation;
+ }
+ }
+
+}
\ No newline at end of file diff --git a/JamTools/Assets/JamTools/Scripts/Character/CameraFollow.cs.meta b/JamTools/Assets/JamTools/Scripts/Character/CameraFollow.cs.meta new file mode 100644 index 0000000..462f5e4 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Character/CameraFollow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 941c680575cd4044891a853d36911609 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController.cs b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController.cs new file mode 100644 index 0000000..f1dd6e2 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController.cs @@ -0,0 +1,223 @@ +using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace JamTools
+{
+
+ // 第一人称角色控制
+ public class FPSCharacterController : MonoBehaviour
+ {
+ [Flags]
+ public enum CharacterModule
+ {
+ None,
+ LookAround, // 相机环绕
+ MoveAround, // 水平地面移动
+ MoveInAir, // 空中移动
+ Dodge, // 冲刺
+ Rush, // 加速
+ WalkOnSlope, // 斜面移动
+ WalkOnStairs, // 楼梯移动
+ WallRun, // 飞檐走壁
+ Jump, // 跳跃
+ WallJump, // 忍者跳
+ Slide, // 滑铲
+ } + + [SerializeField] private CharacterModule m_Modules; +
+ [SerializeField] private Transform m_Eye;
+
+ [SerializeField] private GroundChecker m_GroundChecker;
+
+ [Header("Look Around")]
+ [SerializeField] private float m_LookSensitive = 1000f;
+ private float m_XRotation;
+
+ [Header("Move Around")]
+ [SerializeField] private float m_MoveSpeed = 100f;
+ private Vector3 m_MoveDirection;
+
+ [Header("Move In Air")]
+ [SerializeField] private float m_MoveSpeedInAir = 50f;
+
+ [Header("Shot")]
+ [SerializeField] private GameObject m_Bullet;
+ [SerializeField] private Transform m_Muzzle;
+
+ private Rigidbody m_Rigidbody;
+ private bool m_LockCursor = false;
+
+ public bool lockCursor
+ {
+ get
+ {
+ return m_LockCursor;
+ }
+ set
+ {
+ m_LockCursor = value;
+ if(value)
+ {
+ Cursor.lockState = CursorLockMode.Locked;
+ }
+ else
+ {
+ Cursor.lockState = CursorLockMode.None;
+ }
+ }
+ }
+
+ bool IsModuleActive(CharacterModule module)
+ {
+ return (module & m_Modules) != 0;
+ }
+
+ void ActivateModule(CharacterModule module)
+ {
+ m_Modules |= module;
+ }
+
+ void LookAround()
+ {
+ if (!IsModuleActive(CharacterModule.LookAround))
+ return;
+
+ float mouseX = Input.GetAxis("Mouse X");
+ float mouseY = Input.GetAxis("Mouse Y");
+
+ m_XRotation -= mouseY * Time.deltaTime * m_LookSensitive;
+ m_XRotation = Mathf.Clamp(m_XRotation, -90, 90);
+
+ m_Eye.localRotation = Quaternion.Euler(m_XRotation, 0, 0);
+
+ transform.Rotate(Vector3.up * mouseX * Time.deltaTime * m_LookSensitive);
+ }
+
+ void MoveAroundUpdate()
+ {
+ if (!IsModuleActive(CharacterModule.MoveAround))
+ return;
+
+ float moveX = Input.GetAxis("Horizontal");
+ float moveZ = Input.GetAxis("Vertical"); +
+ m_MoveDirection = transform.right * moveX + transform.forward * moveZ;
+ m_MoveDirection = m_MoveDirection.normalized;
+
+ }
+
+ void MoveAroundFixedUpdate()
+ {
+ if (!IsModuleActive(CharacterModule.MoveAround))
+ return;
+
+ if (!m_GroundChecker.isOnGround)
+ return;
+
+ float vy = m_Rigidbody.velocity.y;
+ Vector3 velocity = new Vector3(m_MoveDirection.x * Time.deltaTime * m_MoveSpeed, vy, m_MoveDirection.z * Time.deltaTime * m_MoveSpeed);
+
+ m_Rigidbody.velocity = Vector3.Lerp(m_Rigidbody.velocity, velocity, 0.25f);
+ }
+
+ void MoveInAirUpdate()
+ {
+ if (!IsModuleActive(CharacterModule.MoveInAir))
+ return;
+
+ if (m_GroundChecker.isOnGround)
+ return;
+
+ float moveX = Input.GetAxis("Horizontal");
+ float moveZ = Input.GetAxis("Vertical"); +
+ m_MoveDirection = transform.right * moveX + transform.forward * moveZ;
+ m_MoveDirection = m_MoveDirection.normalized;
+ }
+
+ void MoveInAirFixedUpdate()
+ {
+ if (!IsModuleActive(CharacterModule.MoveInAir))
+ return;
+
+ if (m_GroundChecker.isOnGround)
+ return;
+
+ if (m_MoveDirection.magnitude == 0)
+ return;
+
+ float vy = m_Rigidbody.velocity.y;
+ Vector3 velocity = new Vector3(m_MoveDirection.x * Time.deltaTime * m_MoveSpeedInAir, vy, m_MoveDirection.z * Time.deltaTime * m_MoveSpeedInAir);
+
+ m_Rigidbody.velocity = Vector3.Lerp(m_Rigidbody.velocity, velocity, 0.25f);
+ }
+
+ void Jump()
+ {
+ if (!IsModuleActive(CharacterModule.Jump))
+ return;
+
+ if (!m_GroundChecker.isOnGround)
+ return;
+
+ if(Input.GetButtonDown("Jump"))
+ {
+ m_Rigidbody.AddForce(Vector3.up * 300, ForceMode.Acceleration);
+ }
+ }
+
+ void Dodge()
+ {
+ if (!IsModuleActive(CharacterModule.Dodge))
+ return;
+
+ if(Input.GetKeyDown(KeyCode.LeftShift))
+ {
+ m_Rigidbody.AddForce(transform.forward * 5000, ForceMode.Acceleration);
+ }
+ }
+
+ void Shot()
+ {
+ if(Input.GetButtonDown("Fire1"))
+ {
+ GameObject go = GameObject.Instantiate(m_Bullet);
+ go.transform.position = m_Muzzle.position;
+ go.GetComponent<Rigidbody>().velocity = m_Muzzle.forward * 100;
+ }
+ }
+
+ private void Awake()
+ {
+ m_Rigidbody = GetComponent<Rigidbody>();
+ }
+
+ private void Start()
+ {
+ m_XRotation = 0;
+
+ lockCursor = true;
+ }
+
+ private void Update()
+ {
+ LookAround();
+ MoveAroundUpdate();
+ MoveInAirUpdate();
+ Jump();
+ Dodge();
+ Shot();
+ }
+
+ private void FixedUpdate()
+ {
+ MoveAroundFixedUpdate();
+ MoveInAirFixedUpdate();
+ }
+
+ }
+
+}
diff --git a/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController.cs.meta b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController.cs.meta new file mode 100644 index 0000000..555d7fe --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Character/FPSCharacterController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9013df258fd554e4e80d2a39ae1c5a86 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/Character/GroundChecker.cs b/JamTools/Assets/JamTools/Scripts/Character/GroundChecker.cs new file mode 100644 index 0000000..5c18dff --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Character/GroundChecker.cs @@ -0,0 +1,40 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace JamTools
+{
+
+ public class GroundChecker : MonoBehaviour
+ {
+
+ private bool m_IsOnGround;
+ public bool isOnGround
+ {
+ get
+ {
+ return m_IsOnGround;
+ }
+ }
+
+ private void OnTriggerEnter(Collider other)
+ {
+ Debug.Log("OnTriggerEnter");
+ m_IsOnGround = true;
+ }
+
+ private void OnTriggerExit(Collider other)
+ {
+ Debug.Log("OnTriggerExit");
+ m_IsOnGround = false;
+ }
+
+ private void OnTriggerStay(Collider other)
+ {
+ //Debug.Log("OnTriggerStay");
+ m_IsOnGround = true;
+ }
+
+ }
+
+}
diff --git a/JamTools/Assets/JamTools/Scripts/Character/GroundChecker.cs.meta b/JamTools/Assets/JamTools/Scripts/Character/GroundChecker.cs.meta new file mode 100644 index 0000000..6d7d500 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Character/GroundChecker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 77cfc1aa874d7ae4c906191d64538a3a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/Math.meta b/JamTools/Assets/JamTools/Scripts/Math.meta new file mode 100644 index 0000000..dee15cb --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Math.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed50ccfb24d775b4dafa806f920fb966 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/Math/MathUtils.cs b/JamTools/Assets/JamTools/Scripts/Math/MathUtils.cs new file mode 100644 index 0000000..fb2378e --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Math/MathUtils.cs @@ -0,0 +1,15 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace JamTools
+{
+
+ public class MathUtils
+ {
+
+
+
+ }
+
+}
\ No newline at end of file diff --git a/JamTools/Assets/JamTools/Scripts/Math/MathUtils.cs.meta b/JamTools/Assets/JamTools/Scripts/Math/MathUtils.cs.meta new file mode 100644 index 0000000..fb47325 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Math/MathUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8fdae86a38bbd34b877e4c49185866b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/Projectile.meta b/JamTools/Assets/JamTools/Scripts/Projectile.meta new file mode 100644 index 0000000..fc0b718 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Projectile.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f5a1b6c5dc537a4bac6d25da2789a4e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/Projectile/SphereBullet.cs b/JamTools/Assets/JamTools/Scripts/Projectile/SphereBullet.cs new file mode 100644 index 0000000..44de696 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Projectile/SphereBullet.cs @@ -0,0 +1,27 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class SphereBullet : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+
+ private void OnCollisionEnter(Collision collision)
+ {
+ }
+
+ private void OnCollisionExit(Collision collision)
+ {
+ Destroy(this.gameObject);
+ }
+}
diff --git a/JamTools/Assets/JamTools/Scripts/Projectile/SphereBullet.cs.meta b/JamTools/Assets/JamTools/Scripts/Projectile/SphereBullet.cs.meta new file mode 100644 index 0000000..3c7d7a6 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/Projectile/SphereBullet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b04ac7939fcad834eb7f307bc80ecf3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/UI.meta b/JamTools/Assets/JamTools/Scripts/UI.meta new file mode 100644 index 0000000..75d543c --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64284bd8573737f478b1adacb050bfae +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamTools/Assets/JamTools/Scripts/UI/UIPanelBase.cs b/JamTools/Assets/JamTools/Scripts/UI/UIPanelBase.cs new file mode 100644 index 0000000..b3dee94 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/UI/UIPanelBase.cs @@ -0,0 +1,19 @@ +using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace JamTools
+{
+
+ //
+ public class UIPanelBase : MonoBehaviour
+ {
+
+ protected void Set()
+ {
+
+ }
+
+ }
+
+}
diff --git a/JamTools/Assets/JamTools/Scripts/UI/UIPanelBase.cs.meta b/JamTools/Assets/JamTools/Scripts/UI/UIPanelBase.cs.meta new file mode 100644 index 0000000..931e924 --- /dev/null +++ b/JamTools/Assets/JamTools/Scripts/UI/UIPanelBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e9837ab97fa4d834c8b987cea27424ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |