Player, player movement, camera control

This commit is contained in:
2024-12-07 21:48:47 +01:00
parent 54fe327198
commit 8969435fda
1052 changed files with 166612 additions and 6768 deletions

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 4fc217c32ad7f464ca8b41993f129f21
folderAsset: yes
timeCreated: 1507244931
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: c38e6dcd67013f24ea1d964eb7158bcf
folderAsset: yes
timeCreated: 1507248137
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 51116ce509f204c439bf161c3492f5f2
timeCreated: 1506988233
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: 59c94ba19ccaba442811b429355d9346
timeCreated: 1517755563
licenseType: Store
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 25800000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,78 @@
fileFormatVersion: 2
guid: b6444c446b97c3949a4e91a10723a1db
timeCreated: 1517755562
licenseType: Store
TextureImporter:
fileIDToRecycleName:
8900000: generatedCubemap
externalObjects: {}
serializedVersion: 4
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 1
seamlessCubemap: 1
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 2
aniso: 0
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 2
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
spritePackingTag:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 0a34100067b7ebb4a987b58e8b8243a6
folderAsset: yes
timeCreated: 1507244924
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,70 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using KinematicCharacterController;
using System;
namespace KinematicCharacterController.Walkthrough.PlayerCameraCharacterSetup
{
public class MyCharacterController : MonoBehaviour, ICharacterController
{
public KinematicCharacterMotor Motor;
private void Start()
{
// Assign to motor
Motor.CharacterController = this;
}
public void BeforeCharacterUpdate(float deltaTime)
{
// This is called before the motor does anything
}
public void UpdateRotation(ref Quaternion currentRotation, float deltaTime)
{
// This is called when the motor wants to know what its rotation should be right now
}
public void UpdateVelocity(ref Vector3 currentVelocity, float deltaTime)
{
// This is called when the motor wants to know what its velocity should be right now
}
public void AfterCharacterUpdate(float deltaTime)
{
// This is called after the motor has finished everything in its update
}
public bool IsColliderValidForCollisions(Collider coll)
{
// This is called after when the motor wants to know if the collider can be collided with (or if we just go through it)
return true;
}
public void OnGroundHit(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint, ref HitStabilityReport hitStabilityReport)
{
// This is called when the motor's ground probing detects a ground hit
}
public void OnMovementHit(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint, ref HitStabilityReport hitStabilityReport)
{
// This is called when the motor's movement logic detects a hit
}
public void ProcessHitStabilityReport(Collider hitCollider, Vector3 hitNormal, Vector3 hitPoint, Vector3 atCharacterPosition, Quaternion atCharacterRotation, ref HitStabilityReport hitStabilityReport)
{
// This is called after every hit detected in the motor, to give you a chance to modify the HitStabilityReport any way you want
}
public void PostGroundingUpdate(float deltaTime)
{
// This is called after the motor has finished its ground probing, but before PhysicsMover/Velocity/etc.... handling
}
public void OnDiscreteCollisionDetected(Collider hitCollider)
{
// This is called by the motor when it is detecting a collision that did not result from a "movement hit".
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 4b647278478c8694ab6b00ac51347de7
timeCreated: 1507245023
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,71 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using KinematicCharacterController;
using KinematicCharacterController.Examples;
using System.Linq;
namespace KinematicCharacterController.Walkthrough.PlayerCameraCharacterSetup
{
public class MyPlayer : MonoBehaviour
{
public ExampleCharacterCamera OrbitCamera;
public Transform CameraFollowPoint;
public MyCharacterController Character;
private Vector3 _lookInputVector = Vector3.zero;
private void Start()
{
Cursor.lockState = CursorLockMode.Locked;
// Tell camera to follow transform
OrbitCamera.SetFollowTransform(CameraFollowPoint);
// Ignore the character's collider(s) for camera obstruction checks
OrbitCamera.IgnoredColliders = Character.GetComponentsInChildren<Collider>().ToList();
}
private void Update()
{
if (Input.GetMouseButtonDown(0))
{
Cursor.lockState = CursorLockMode.Locked;
}
}
private void LateUpdate()
{
HandleCameraInput();
}
private void HandleCameraInput()
{
// Create the look input vector for the camera
float mouseLookAxisUp = Input.GetAxisRaw("Mouse Y");
float mouseLookAxisRight = Input.GetAxisRaw("Mouse X");
_lookInputVector = new Vector3(mouseLookAxisRight, mouseLookAxisUp, 0f);
// Prevent moving the camera while the cursor isn't locked
if (Cursor.lockState != CursorLockMode.Locked)
{
_lookInputVector = Vector3.zero;
}
// Input for zooming the camera (disabled in WebGL because it can cause problems)
float scrollInput = -Input.GetAxis("Mouse ScrollWheel");
#if UNITY_WEBGL
scrollInput = 0f;
#endif
// Apply inputs to the camera
OrbitCamera.UpdateWithInput(Time.deltaTime, scrollInput, _lookInputVector);
// Handle toggling zoom level
if (Input.GetMouseButtonDown(1))
{
OrbitCamera.TargetDistance = (OrbitCamera.TargetDistance == 0f) ? OrbitCamera.DefaultDistance : 0f;
}
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 0659d469a6cbf3448a556b714972454c
timeCreated: 1507245023
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: