diff options
Diffstat (limited to 'JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts')
14 files changed, 745 insertions, 0 deletions
diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/FPSCharacterController.cs b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/FPSCharacterController.cs new file mode 100644 index 0000000..2765025 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/FPSCharacterController.cs @@ -0,0 +1,431 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace JamUtils +{ + + // 第一人称角色控制 + public class FPSCharacterController : MonoBehaviour + { + [Flags] + public enum CharacterModule + { + None, + LookAround = 1 << 0, // 相机环绕 + MoveAround = 1 << 1, // 水平地面移动 + MoveInAir = 1 << 2, // 空中移动 + Dodge = 1 << 3, // 冲刺 + Rush = 1 << 4, // 加速 + WalkOnSlope = 1 << 5 | 1 << 1, // 斜面移动 + WalkOnStairs = 1 << 6 | 1 << 1, // 楼梯移动 + WallRun = 1 << 7, // 飞檐走壁 + Jump = 1 << 8, // 跳跃 + WallJump = 1 << 9, // 忍者跳 + Slide = 1 << 10, // 滑铲 + Shot = 1 << 11, // 射击 + Step = 1 << 12, // 脚步 + PullTrick = 1 << 13, // + ExtraGravity = 1 << 14, // 额外重力 + Crouch = 1 << 15, + } + + [SerializeField] private CharacterModule m_Modules; + + [SerializeField] private Transform m_Eye; + + [SerializeField] private PlayerBody m_Body; + [SerializeField] private GroundChecker m_GroundChecker; + [SerializeField] private WallChecker m_WallChecker; + + [SerializeField] private MainCameraFollow m_Camera; + + #region Modules + + [Header("Look Around")] + [SerializeField] private float m_LookSensitive = 1000f; + [Range(0.01f, 1)] + [SerializeField] private float m_LookSmooth = 0.2f; + private float m_CameraRotation; + private float m_BodyRotation; + + [Header("Move Around")] + [SerializeField] private float m_MoveSpeed = 100f; + [Range(0.01f, 1)] + [SerializeField] private float m_MoveSmooth = 0.2f; + private Vector3 m_MoveDirection; + private bool m_ReadyMoveAround = false; + [SerializeField] private bool m_HeadBobbing = false; + + [Header("Move In Air")] + [SerializeField] private float m_MoveSpeedInAir = 50f; + [SerializeField] private float m_MoveInAirSmooth = 0.2f; + private Vector3 m_MoveInAirDirection; + + [Header("Jump")] + [SerializeField] private float m_JumpPower = 300f; + private bool m_ReadyToJump = false; + + [Header("Shot")] + [SerializeField] private Transform m_Muzzle; + [SerializeField] private LayerMask m_HittableLayers; + [SerializeField] private float m_ShotInfiniteDistance = 100f; + + [Header("WallJump")] + [SerializeField] private float m_WallJumpForce = 1; + [SerializeField] private float m_WallJumpPower = 1000; + private bool m_ReadyWallJump = false; + + [Header("WallRun")] + [SerializeField] private float m_WallRunSpeed = 1; + + [Header("ExtraGravity")] + [SerializeField] private Vector3 m_ExtraGravity; + + [Header("WalkOnStairs")] + [SerializeField] private Transform m_Lower; + [SerializeField] private Transform m_Upper; + [SerializeField] private float m_StepSmooth; + + #endregion + + public Func<RaycastHit, bool> checkHit; + public Action<Vector3, Transform> shootTarget; + + 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"); + + //mouseX = -0.1f; // test jittery + + m_CameraRotation -= mouseY * Time.deltaTime * m_LookSensitive; + m_CameraRotation = Mathf.Clamp(m_CameraRotation, -90, 90); + Quaternion rot = Quaternion.Euler(m_CameraRotation, 0, 0); + m_Eye.localRotation = Quaternion.Slerp(m_Eye.localRotation, rot, m_LookSmooth ); + + m_BodyRotation += mouseX * Time.deltaTime * m_LookSensitive; + rot = Quaternion.Euler(0, m_BodyRotation, 0); + transform.localRotation = Quaternion.Slerp(transform.localRotation, rot, m_LookSmooth); + } + + void MoveAroundUpdate() + { + if (!IsModuleActive(CharacterModule.MoveAround)) + return; + + if (!m_GroundChecker.isOnGround) + return; + + float moveX = Input.GetAxisRaw("Horizontal"); + float moveZ = Input.GetAxisRaw("Vertical"); + + Vector3 right = transform.right; + Vector3 forward = transform.forward; + + Vector3 dir = right * moveX + forward * moveZ; + + if (IsModuleActive(CharacterModule.WalkOnSlope)) + { + if (m_GroundChecker.isOnGround) + { + RaycastHit hitInfo; + if (Physics.Raycast(m_GroundChecker.foot.position, Vector3.down, out hitInfo)) + { + Vector3 normal = hitInfo.normal; + dir = Vector3.ProjectOnPlane(dir, normal); + GizmosHandle.Instance.DoGizmos(() => + { + Gizmos.DrawLine(hitInfo.point + new Vector3(0, 0.1f, 0), hitInfo.point + dir); + }); + } + } + } + + dir = dir.normalized; + + m_MoveDirection = Vector3.Slerp(m_MoveDirection, dir, 1f); + } + + 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); + + Vector3 rigidVel = m_Rigidbody.velocity; + + // 对速度Slerp比较危险 + //if (Vector3.Angle(rigidVel, velocity) > 90) + //{ + // m_Rigidbody.velocity = Vector3.Lerp(rigidVel, velocity, m_MoveSmooth); + //} + //else + //{ + // m_Rigidbody.velocity = Vector3.Slerp(rigidVel, velocity, m_MoveSmooth); + //} + + m_Rigidbody.velocity = Vector3.Lerp(rigidVel, velocity, m_MoveSmooth); + } + + void MoveInAirUpdate() + { + if (!IsModuleActive(CharacterModule.MoveInAir)) + return; + + if (m_GroundChecker.isOnGround) + return; + + float moveX = Input.GetAxisRaw("Horizontal"); + float moveZ = Input.GetAxisRaw("Vertical"); + + m_MoveInAirDirection = Vector3.ClampMagnitude(transform.right * moveX + transform.forward * moveZ, 1); + } + + void MoveInAirFixedUpdate() + { + if (!IsModuleActive(CharacterModule.MoveInAir)) + return; + + if (m_GroundChecker.isOnGround) + return; + + if (m_MoveInAirDirection.magnitude == 0f) + return; + + float vy = m_Rigidbody.velocity.y; + Vector3 velocity = new Vector3(m_MoveInAirDirection.x * Time.deltaTime * m_MoveSpeedInAir, vy, m_MoveInAirDirection.z * Time.deltaTime * m_MoveSpeedInAir); + + m_Rigidbody.velocity = Vector3.Lerp(m_Rigidbody.velocity, velocity, m_MoveInAirSmooth); + } + + void Jump() + { + if (!IsModuleActive(CharacterModule.Jump)) + return; + + if (!m_GroundChecker.isOnGround) + return; + + if (Input.GetButtonDown("Jump")) + { + m_ReadyToJump = true; + } + } + + void JumpFixedUpdate() + { + if(m_ReadyToJump) + { + m_ReadyToJump = false; + m_Rigidbody.AddForce(Vector3.up * m_JumpPower, ForceMode.Acceleration); + } + } + + void Dodge() + { + if (!IsModuleActive(CharacterModule.Dodge)) + return; + + if (Input.GetKeyDown(KeyCode.LeftShift)) + { + + } + } + + void DodgeFixed() + { + + } + + void Shot() + { + if (!IsModuleActive(CharacterModule.Shot)) + return; + + if (Input.GetButtonDown("Fire1")) + { + Vector3 hitPoint = GetHitPoint(); + if (shootTarget != null) + shootTarget(hitPoint, m_Muzzle); + } + } + + Vector3 GetHitPoint() + { + RaycastHit[] hits = Physics.RaycastAll(m_Eye.position, m_Eye.forward, m_HittableLayers, (int)QueryTriggerInteraction.Ignore); + if (hits.Length < 1) + { + return m_Eye.position + m_Eye.forward * m_ShotInfiniteDistance; + } + else + { + for (int i = 0; i < hits.Length; ++i) + { + if (checkHit != null && checkHit(hits[i])) + { + return hits[i].point; + } + } + } + return hits[0].point; + } + + void WallJump() + { + if (!IsModuleActive(CharacterModule.WallJump)) + return; + + if (!m_WallChecker.IsOnWall) + return; + + if (m_GroundChecker.isOnGround) + return; + + if (Input.GetButtonDown("Jump")) + { + m_ReadyWallJump = true; + } + } + + void WallJumpFixedUpdate() + { + if(m_ReadyWallJump) + { + m_ReadyWallJump = false; + Vector3 poc; + if (m_WallChecker.GetCollisionPoint(out poc)) + { + Vector3 dir = Vector3.ClampMagnitude(transform.position - poc, 1f); + Vector3 wallJumpDirection = new Vector3(dir.x, 1, dir.z); + m_Rigidbody.velocity = Vector3.zero; + m_Rigidbody.AddForce(wallJumpDirection * m_WallJumpPower); + } + } + } + + void WallRun() + { + if (!IsModuleActive(CharacterModule.WallRun)) + return; + + if (!m_WallChecker.IsOnWall) + return; + + } + + void PullTrick() + { + + } + + void ExtraGravity() + { + if (!IsModuleActive(CharacterModule.ExtraGravity)) + return; + + m_Rigidbody.AddForce(m_ExtraGravity, ForceMode.Acceleration); + } + + void WalkOnStairs() + { + //int layermask = ~(1 << LayerMask.NameToLayer("Player")); + + //RaycastHit hitLower; + //if (Physics.Raycast(m_Lower.position, transform.TransformDirection(Vector3.forward), out hitLower, 0.6f, layermask)) + //{ + // RaycastHit hitUpper; + // if (!Physics.Raycast(m_Upper.position, transform.TransformDirection(Vector3.forward), out hitUpper, 0.7f, layermask)) + // { + // m_Rigidbody.position += new Vector3(0f, m_StepSmooth * Time.deltaTime, 0f); + // } + //} + } + + + void SetCamera () + { + m_Camera.SetCameraPositionAndRotation(m_Eye); + } + + private void Awake() + { + m_Rigidbody = GetComponent<Rigidbody>(); + } + + private void Start() + { + m_CameraRotation = 0; + + lockCursor = true; + } + + private void Update() + { + LookAround(); + MoveAroundUpdate(); + MoveInAirUpdate(); + Jump(); + Dodge(); + Shot(); + WallJump(); + PullTrick(); + + SetCamera(); + } + + private void FixedUpdate() + { + WalkOnStairs(); + MoveAroundFixedUpdate(); + MoveInAirFixedUpdate(); + DodgeFixed(); + ExtraGravity(); + JumpFixedUpdate(); + WallJumpFixedUpdate(); + } + + } +} diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/FPSCharacterController.cs.meta b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/FPSCharacterController.cs.meta new file mode 100644 index 0000000..555d7fe --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/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/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/GroundChecker.cs b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/GroundChecker.cs new file mode 100644 index 0000000..279786d --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/GroundChecker.cs @@ -0,0 +1,48 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace JamUtils +{ + + public class GroundChecker : MonoBehaviour + { + [SerializeField] private Transform m_Foot; + + private List<Collider> m_Colliders = new List<Collider>(); + + public Transform foot + { + get + { + return m_Foot; + } + } + + public bool isOnGround + { + get + { + return m_Colliders.Count != 0; + } + } + + private void OnTriggerEnter(Collider other) + { + if (!m_Colliders.Contains(other)) + m_Colliders.Add(other); + } + + private void OnTriggerExit(Collider other) + { + if (m_Colliders.Contains(other)) + m_Colliders.Remove(other); + } + + private void OnTriggerStay(Collider other) + { + } + + } + +} diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/GroundChecker.cs.meta b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/GroundChecker.cs.meta new file mode 100644 index 0000000..6d7d500 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/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/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/MainCameraFollow.cs b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/MainCameraFollow.cs new file mode 100644 index 0000000..4f8ebab --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/MainCameraFollow.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace JamUtils +{ + + [RequireComponent(typeof(Camera))] + public class MainCameraFollow : MonoBehaviour + { + + public void SetCameraPositionAndRotation(Transform reference) + { + transform.position = reference.position; + transform.rotation = reference.rotation; + } + + } + +}
\ No newline at end of file diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/MainCameraFollow.cs.meta b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/MainCameraFollow.cs.meta new file mode 100644 index 0000000..890d789 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/MainCameraFollow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52723e4b1bc8e7a459bca520c75f6e48 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/Player.cs b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/Player.cs new file mode 100644 index 0000000..0e86a96 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/Player.cs @@ -0,0 +1,39 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace JamUtils +{ + + public class Player : MonoBehaviour + { + [SerializeField] private GameObject m_Bullet; + + private FPSCharacterController m_Controller; + + private void Awake() + { + m_Controller = GetComponent<FPSCharacterController>(); + } + + private void Start() + { + m_Controller.shootTarget = ShootTarget; + m_Controller.checkHit = CheckHit; + } + + bool CheckHit(RaycastHit hit) + { + return true; + } + + void ShootTarget(Vector3 target, Transform muzzle) + { + GameObject go = GameObject.Instantiate(m_Bullet); + go.transform.position = muzzle.position; + go.GetComponent<Rigidbody>().velocity = (target - muzzle.position).normalized * 100; + } + + } + +} diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/Player.cs.meta b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/Player.cs.meta new file mode 100644 index 0000000..d39ac17 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/Player.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ec838ef829bbe05498510200c17766a4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/PlayerBody.cs b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/PlayerBody.cs new file mode 100644 index 0000000..a3dadf3 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/PlayerBody.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class PlayerBody : MonoBehaviour +{ + private CapsuleCollider m_CapsuleCollider; + + public CapsuleCollider capsuleCollider + { + get + { + return m_CapsuleCollider; + } + } + + private void Awake() + { + m_CapsuleCollider = GetComponent<CapsuleCollider>(); + } + + private void OnCollisionEnter(Collision collision) + { + + } + + private void OnCollisionStay(Collision collision) + { + + } + + private void OnCollisionExit(Collision collision) + { + + } + +} diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/PlayerBody.cs.meta b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/PlayerBody.cs.meta new file mode 100644 index 0000000..218de82 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/PlayerBody.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c8f58020a68c9a4cad47eca148231ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/StairChecker.cs b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/StairChecker.cs new file mode 100644 index 0000000..fe00366 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/StairChecker.cs @@ -0,0 +1,19 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class StairChecker : MonoBehaviour +{ + public Transform upper; + public Transform lower; + + void Start() + { + + } + + void Update() + { + + } +} diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/StairChecker.cs.meta b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/StairChecker.cs.meta new file mode 100644 index 0000000..bf23780 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/StairChecker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa1da003e4adb0a4882351b5858277d2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/WallChecker.cs b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/WallChecker.cs new file mode 100644 index 0000000..a437113 --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/WallChecker.cs @@ -0,0 +1,74 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace JamUtils +{ + + + public class WallChecker : MonoBehaviour + { + + private bool m_IsOnWall; + public bool IsOnWall + { + get + { + return m_IsOnWall; + } + } + + private List<Collider> m_Colliders = new List<Collider>(); + + private void Update() + { + if (m_IsOnWall && m_Colliders.Count == 0) + { + m_IsOnWall = false; + } + } + + public bool GetCollisionPoint(out Vector3 point) + { + bool result = false; + point = Vector3.zero; + if (m_Colliders.Count > 0) + { + float dist = 100f; + for (int i = 0; i < m_Colliders.Count; ++i) + { + Collider col = m_Colliders[i]; + Vector3 p = ColliderUtility.FindClosestPoint(col, transform.position); + if (Vector3.Distance(p, transform.position) <= dist) + { + dist = Vector3.Distance(p, transform.position); + point = p; + result = true; + } + } + } + return result; + } + + private void OnTriggerEnter(Collider other) + { + m_IsOnWall = true; + + m_Colliders.Add(other); + } + + private void OnTriggerStay(Collider other) + { + } + + private void OnTriggerExit(Collider other) + { + if (m_Colliders.Contains(other)) + { + m_Colliders.Remove(other); + } + } + + } + +} diff --git a/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/WallChecker.cs.meta b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/WallChecker.cs.meta new file mode 100644 index 0000000..2041b9f --- /dev/null +++ b/JamHelper/Assets/JamUtils/FirstPersonCharacterController/Rigidbody/MoveByVelocity/Scripts/WallChecker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 32f00fa7c9bddb34a9f2255a5ad0d669 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |