basic camera controller
This commit is contained in:
parent
ab7cd608cb
commit
7fefaae405
|
@ -706,7 +706,7 @@ MonoBehaviour:
|
||||||
m_ActionId: 2bbc2e93-6016-4544-8399-0c4ee222850c
|
m_ActionId: 2bbc2e93-6016-4544-8399-0c4ee222850c
|
||||||
m_ActionName: CoreMap/Use[/Keyboard/e,/XInputControllerWindows/buttonWest]
|
m_ActionName: CoreMap/Use[/Keyboard/e,/XInputControllerWindows/buttonWest]
|
||||||
m_NeverAutoSwitchControlSchemes: 0
|
m_NeverAutoSwitchControlSchemes: 0
|
||||||
m_DefaultControlScheme: PCMR
|
m_DefaultControlScheme:
|
||||||
m_DefaultActionMap: CoreMap
|
m_DefaultActionMap: CoreMap
|
||||||
m_SplitScreenIndex: -1
|
m_SplitScreenIndex: -1
|
||||||
m_Camera: {fileID: 1444606338}
|
m_Camera: {fileID: 1444606338}
|
||||||
|
@ -751,6 +751,7 @@ GameObject:
|
||||||
- component: {fileID: 1444606338}
|
- component: {fileID: 1444606338}
|
||||||
- component: {fileID: 1444606337}
|
- component: {fileID: 1444606337}
|
||||||
- component: {fileID: 1444606340}
|
- component: {fileID: 1444606340}
|
||||||
|
- component: {fileID: 1444606341}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: PlayerCamera
|
m_Name: PlayerCamera
|
||||||
m_TagString: MainCamera
|
m_TagString: MainCamera
|
||||||
|
@ -855,6 +856,20 @@ MonoBehaviour:
|
||||||
m_RequiresDepthTexture: 0
|
m_RequiresDepthTexture: 0
|
||||||
m_RequiresColorTexture: 0
|
m_RequiresColorTexture: 0
|
||||||
m_Version: 2
|
m_Version: 2
|
||||||
|
--- !u!114 &1444606341
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1444606336}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 805caadbe4df94a40bf7ddb70bea02f6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_settings: {fileID: 11400000, guid: 995f378ab762cd344b7a6d108f049191, type: 2}
|
||||||
|
_inputHandler: {fileID: 1292675913}
|
||||||
--- !u!1 &1468685575
|
--- !u!1 &1468685575
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c3040315fc41e344b95af9bba0d16776
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,42 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class CameraController : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField]
|
||||||
|
private CameraSettings _settings;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
private PlayerInputHandler _inputHandler;
|
||||||
|
|
||||||
|
private Vector2 _cameraRotation;
|
||||||
|
|
||||||
|
void FixedUpdate()
|
||||||
|
{
|
||||||
|
float deltaTime = Time.fixedDeltaTime;
|
||||||
|
|
||||||
|
_cameraRotation += _inputHandler.InputState.Look * ( deltaTime * _settings.LookSpeed );
|
||||||
|
_cameraRotation.y = Mathf.Clamp( _cameraRotation.y, _settings.LookYMin, _settings.LookYMax );
|
||||||
|
_inputHandler.SetCameraRotation(_cameraRotation.x * -180.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LateUpdate()
|
||||||
|
{
|
||||||
|
if ( _cameraRotation.x > 1.0f )
|
||||||
|
{
|
||||||
|
_cameraRotation.x -= 2.0f;
|
||||||
|
}
|
||||||
|
else if ( _cameraRotation.x < -1.0f )
|
||||||
|
{
|
||||||
|
_cameraRotation.x += 2.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
Quaternion rot = Quaternion.Euler( _cameraRotation.y * 180.0f, _cameraRotation.x * 180.0f, 0f );
|
||||||
|
Vector3 pos = rot * ( Vector3.back * _settings.LookDistance );
|
||||||
|
|
||||||
|
transform.localPosition = pos;
|
||||||
|
transform.rotation = rot;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 805caadbe4df94a40bf7ddb70bea02f6
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,16 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
[CreateAssetMenu(fileName = "CameraSettings.asset", menuName = "KernelPanic/Camera/Settings")]
|
||||||
|
public class CameraSettings : ScriptableObject
|
||||||
|
{
|
||||||
|
[Header("Speed")]
|
||||||
|
public float LookSpeed;
|
||||||
|
|
||||||
|
[Header("Constraints")]
|
||||||
|
public float LookDistance;
|
||||||
|
|
||||||
|
public float LookYMin;
|
||||||
|
public float LookYMax;
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b67d3eff4427cf14182daa0548676571
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,23 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using TMPro;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public struct CameraRelativeInput
|
||||||
|
{
|
||||||
|
private Vector2 _base;
|
||||||
|
private float _cameraAngle;
|
||||||
|
|
||||||
|
public void SetValue( Vector2 value )
|
||||||
|
{
|
||||||
|
_base = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetAngle( float angle )
|
||||||
|
{
|
||||||
|
_cameraAngle = angle;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector2 Value
|
||||||
|
=> Quaternion.Euler( 0f, 0f, _cameraAngle ) * _base;
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2001265c10e110042a86e193cff6f419
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -20,7 +20,7 @@ public class PlayerController : MonoBehaviour
|
||||||
|
|
||||||
private void FixedUpdate()
|
private void FixedUpdate()
|
||||||
{
|
{
|
||||||
Vector2 moveVector2 = _inputHandler.InputState.Move;
|
Vector2 moveVector2 = _inputHandler.InputState.Move.Value;
|
||||||
Vector3 moveVector = new Vector3( moveVector2.x, 0f, moveVector2.y );
|
Vector3 moveVector = new Vector3( moveVector2.x, 0f, moveVector2.y );
|
||||||
|
|
||||||
_rigidbody.velocity = moveVector * _movementSettings.BaseMovementSpeed;
|
_rigidbody.velocity = moveVector * _movementSettings.BaseMovementSpeed;
|
||||||
|
|
|
@ -13,8 +13,9 @@ public class PlayerInputHandler : MonoBehaviour
|
||||||
{
|
{
|
||||||
public BufferedInput Jump;
|
public BufferedInput Jump;
|
||||||
public BufferedInput Use;
|
public BufferedInput Use;
|
||||||
public Vector2 Move;
|
public CameraRelativeInput Move;
|
||||||
public Vector2 Look;
|
public Vector2 Look;
|
||||||
|
public float MoveRotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerInputState InputState => _state;
|
public PlayerInputState InputState => _state;
|
||||||
|
@ -27,8 +28,8 @@ public class PlayerInputHandler : MonoBehaviour
|
||||||
|
|
||||||
_state.Jump = new BufferedInput( _inputSettings.JumpBufferTime );
|
_state.Jump = new BufferedInput( _inputSettings.JumpBufferTime );
|
||||||
_state.Use = new BufferedInput( _inputSettings.UseBufferTime );
|
_state.Use = new BufferedInput( _inputSettings.UseBufferTime );
|
||||||
|
_state.Move = new CameraRelativeInput();
|
||||||
_state.Look = Vector2.zero;
|
_state.Look = Vector2.zero;
|
||||||
_state.Move = Vector2.zero;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FixedUpdate()
|
private void FixedUpdate()
|
||||||
|
@ -39,11 +40,14 @@ public class PlayerInputHandler : MonoBehaviour
|
||||||
_state.Use.Update( deltaTime );
|
_state.Use.Update( deltaTime );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetCameraRotation( float angle )
|
||||||
|
=> _state.Move.SetAngle( angle );
|
||||||
|
|
||||||
public void Look( InputAction.CallbackContext context )
|
public void Look( InputAction.CallbackContext context )
|
||||||
=> _state.Look = context.ReadValue<Vector2>();
|
=> _state.Look = context.ReadValue<Vector2>();
|
||||||
|
|
||||||
public void Move( InputAction.CallbackContext context )
|
public void Move( InputAction.CallbackContext context )
|
||||||
=> _state.Move = context.ReadValue<Vector2>();
|
=> _state.Move.SetValue( context.ReadValue<Vector2>() );
|
||||||
|
|
||||||
public void Jump( InputAction.CallbackContext context )
|
public void Jump( InputAction.CallbackContext context )
|
||||||
=> _state.Jump.Set( context.ReadValue<float>() > 0.5f );
|
=> _state.Jump.Set( context.ReadValue<float>() > 0.5f );
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4b0a99647895c3d45bf1200c49d99d31
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,18 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!114 &11400000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 0}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b67d3eff4427cf14182daa0548676571, type: 3}
|
||||||
|
m_Name: CameraSettings
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
LookSpeed: 1
|
||||||
|
LookDistance: 8
|
||||||
|
LookYMin: 0.025
|
||||||
|
LookYMax: 0.5
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 995f378ab762cd344b7a6d108f049191
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -110,7 +110,7 @@
|
||||||
"id": "f11a0fcc-85b6-41ab-adbb-e9630b5bfdaa",
|
"id": "f11a0fcc-85b6-41ab-adbb-e9630b5bfdaa",
|
||||||
"path": "<Mouse>/delta",
|
"path": "<Mouse>/delta",
|
||||||
"interactions": "",
|
"interactions": "",
|
||||||
"processors": "",
|
"processors": "ScaleVector2(x=0.1,y=0.1)",
|
||||||
"groups": "PCMR",
|
"groups": "PCMR",
|
||||||
"action": "Look",
|
"action": "Look",
|
||||||
"isComposite": false,
|
"isComposite": false,
|
||||||
|
|
Loading…
Reference in New Issue