Add items, Pickup logic works
This commit is contained in:
@@ -2,12 +2,19 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class BasicCharacter : MonoBehaviour
|
||||
{
|
||||
public class BasicCharacter : MonoBehaviour {
|
||||
protected MovementBehaviour _movementBehaviour;
|
||||
|
||||
//Kinda not the best but it's fine for now
|
||||
//TODO: Fix this, (ask teacher)
|
||||
protected InteractionBehaviour _interactionBehaviour;
|
||||
public InteractionBehaviour InteractionBehaviour {
|
||||
get => _interactionBehaviour;
|
||||
}
|
||||
|
||||
// Start is called before the first frame update
|
||||
protected virtual void Awake()
|
||||
{
|
||||
protected virtual void Awake() {
|
||||
_movementBehaviour = GetComponent<MovementBehaviour>();
|
||||
_interactionBehaviour = GetComponent<InteractionBehaviour>();
|
||||
}
|
||||
}
|
||||
92
Assets/Player/InteractionBehaviour.cs
Normal file
92
Assets/Player/InteractionBehaviour.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Video;
|
||||
|
||||
[RequireComponent(typeof(MovementBehaviour))]
|
||||
public class InteractionBehaviour : MonoBehaviour, IObjectParentHolder {
|
||||
// Start is called before the first frame update
|
||||
private MovementBehaviour _movementBehaviour;
|
||||
|
||||
[SerializeField] private float _interactionDistance = 2.0f;
|
||||
|
||||
[SerializeField] private LayerMask _interactionLayer;
|
||||
|
||||
private EmptyCounter _lastInteractedObject = null;
|
||||
|
||||
public event EventHandler<OnSelectedCounterArgs> OnSelectedCounter;
|
||||
|
||||
[SerializeField] private Transform _holdItemTransform;
|
||||
private Object _heldObject;
|
||||
|
||||
public class OnSelectedCounterArgs : EventArgs {
|
||||
public EmptyCounter selectedCounter;
|
||||
}
|
||||
|
||||
void Start() {
|
||||
}
|
||||
|
||||
void Awake() {
|
||||
_movementBehaviour = GetComponent<MovementBehaviour>();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update() {
|
||||
}
|
||||
|
||||
public void HandleInteraction() {
|
||||
Vector2 inputVector = _movementBehaviour.desiredMovementDirection.normalized;
|
||||
Vector3 moveDirection = new Vector3(inputVector.x, 0, inputVector.y);
|
||||
Vector3 origin = transform.position;
|
||||
origin.y += 0.5f; //slight offset so we dont go under the counters
|
||||
RaycastHit hit;
|
||||
Debug.DrawRay(origin, transform.forward * _interactionDistance, Color.red);
|
||||
if (Physics.Raycast(origin, transform.forward, out hit, _interactionDistance, _interactionLayer)) {
|
||||
if (hit.transform.TryGetComponent(out EmptyCounter emptyCounter)) {
|
||||
if (_lastInteractedObject != hit.transform.gameObject) {
|
||||
SetSelectedCounter(emptyCounter);
|
||||
}
|
||||
}
|
||||
else {
|
||||
SetSelectedCounter(null);
|
||||
}
|
||||
}
|
||||
else {
|
||||
SetSelectedCounter(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void Interact() {
|
||||
if (_lastInteractedObject == null) return;
|
||||
if (_lastInteractedObject.TryGetComponent(out EmptyCounter emptyCounter)) {
|
||||
emptyCounter.Interact();
|
||||
}
|
||||
}
|
||||
|
||||
private void SetSelectedCounter(EmptyCounter selectedCounter) {
|
||||
_lastInteractedObject = selectedCounter;
|
||||
OnSelectedCounter?.Invoke(this, new OnSelectedCounterArgs { selectedCounter = _lastInteractedObject });
|
||||
}
|
||||
|
||||
public Transform GetHolderTransform() {
|
||||
return _holdItemTransform;
|
||||
}
|
||||
|
||||
public void SetObject(Object obj) {
|
||||
_heldObject = obj;
|
||||
}
|
||||
|
||||
public Object GetObject() {
|
||||
return _heldObject;
|
||||
}
|
||||
|
||||
public void ClearObject() {
|
||||
_heldObject = null;
|
||||
}
|
||||
|
||||
public bool HasObject() {
|
||||
return _heldObject != null;
|
||||
}
|
||||
}
|
||||
11
Assets/Player/InteractionBehaviour.cs.meta
Normal file
11
Assets/Player/InteractionBehaviour.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aea8774c865900040a6da881ffb56cff
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -4,9 +4,27 @@ using UnityEngine;
|
||||
|
||||
public class MovementBehaviour : MonoBehaviour {
|
||||
[SerializeField]
|
||||
private float _movementSpeed = 1.0f;
|
||||
private float _movementSpeed = 10.0f;
|
||||
|
||||
[SerializeField]
|
||||
private float _rotationSpeed = 10.0f;
|
||||
|
||||
[Header("Player")]
|
||||
|
||||
[SerializeField]
|
||||
private float _playerHeight = 1.0f;
|
||||
|
||||
[SerializeField]
|
||||
private float _playerRadius = 0.5f;
|
||||
|
||||
private Vector3 _desiredMovementDirection = Vector3.zero;
|
||||
public Vector3 DesiredMovementDirection
|
||||
public Vector3 desiredMovementDirection
|
||||
{
|
||||
get => _desiredMovementDirection;
|
||||
set => _desiredMovementDirection = value;
|
||||
}
|
||||
|
||||
public Vector3 desiredLookDirection
|
||||
{
|
||||
get => _desiredMovementDirection;
|
||||
set => _desiredMovementDirection = value;
|
||||
@@ -14,14 +32,44 @@ public class MovementBehaviour : MonoBehaviour {
|
||||
private void Update()
|
||||
{
|
||||
HandleMovement();
|
||||
HandleRotation();
|
||||
}
|
||||
private void HandleMovement()
|
||||
{
|
||||
Vector3 movement = _desiredMovementDirection.normalized;
|
||||
movement *= _movementSpeed;
|
||||
transform.position += movement;
|
||||
float moveDistance = _movementSpeed * Time.deltaTime;
|
||||
bool canMove = !Physics.CapsuleCast(transform.position, transform.position + Vector3.up * _playerHeight,
|
||||
_playerRadius, movement, moveDistance);
|
||||
|
||||
if (!canMove) {
|
||||
// Cannot goto movedir
|
||||
|
||||
Vector3 moveX = new Vector3(movement.x, 0, 0);
|
||||
canMove = movement.x != 0 && !Physics.CapsuleCast(transform.position, transform.position + Vector3.up * _playerHeight,
|
||||
_playerRadius, moveX, moveDistance);
|
||||
|
||||
if (canMove) {
|
||||
movement = moveX;
|
||||
} else {
|
||||
Vector3 moveZ = new Vector3(0, 0, movement.z);
|
||||
canMove = movement.z != 0 && !Physics.CapsuleCast(transform.position, transform.position + Vector3.up * _playerHeight,
|
||||
_playerRadius, moveZ, moveDistance);
|
||||
|
||||
if (canMove) {
|
||||
movement = moveZ;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (canMove) {
|
||||
// movement *= _movementSpeed * Time.deltaTime;
|
||||
transform.position += movement * moveDistance;
|
||||
}
|
||||
}
|
||||
public void Jump()
|
||||
{
|
||||
|
||||
private void HandleRotation() {
|
||||
transform.forward =
|
||||
Vector3.Slerp(transform.forward, _desiredMovementDirection, Time.deltaTime * _rotationSpeed);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
310
Assets/Player/Player.prefab
Normal file
310
Assets/Player/Player.prefab
Normal file
@@ -0,0 +1,310 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &640786486714978152
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5777566659569194198}
|
||||
- component: {fileID: 3833719776703474962}
|
||||
- component: {fileID: 1301748261395394069}
|
||||
- component: {fileID: 435465064808107141}
|
||||
m_Layer: 0
|
||||
m_Name: Visual
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5777566659569194198
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 640786486714978152}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1, z: 0}
|
||||
m_LocalScale: {x: 0.75, y: 1, z: 0.75}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1088927845179173297}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3833719776703474962
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 640786486714978152}
|
||||
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &1301748261395394069
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 640786486714978152}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!136 &435465064808107141
|
||||
CapsuleCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 640786486714978152}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 0
|
||||
serializedVersion: 2
|
||||
m_Radius: 0.5
|
||||
m_Height: 2
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &2531809458512849303
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2037988965739386903}
|
||||
m_Layer: 0
|
||||
m_Name: ItemHondHandle
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2037988965739386903
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2531809458512849303}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 2, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1088927845179173297}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &7365205897944721418
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1088927845179173297}
|
||||
- component: {fileID: 4625688497782346778}
|
||||
- component: {fileID: 3254711110533748919}
|
||||
- component: {fileID: 1167921562079878720}
|
||||
m_Layer: 0
|
||||
m_Name: Player
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1088927845179173297
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7365205897944721418}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 5777566659569194198}
|
||||
- {fileID: 5695692478722095363}
|
||||
- {fileID: 2037988965739386903}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &4625688497782346778
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7365205897944721418}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1288b016e639a5d4c93ce7197868a196, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_movementSpeed: 10
|
||||
_rotationSpeed: 20
|
||||
_playerHeight: 1
|
||||
_playerRadius: 0.4
|
||||
--- !u!114 &3254711110533748919
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7365205897944721418}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 757602dc557f18440892f635a083b135, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_inputAsset: {fileID: -944628639613478452, guid: 0f54988b006d41d4eb3eb26ae11f51f9,
|
||||
type: 3}
|
||||
_movementAction: {fileID: -8852883155274049046, guid: 0f54988b006d41d4eb3eb26ae11f51f9,
|
||||
type: 3}
|
||||
_interactionAction: {fileID: 3724582617646440488, guid: 0f54988b006d41d4eb3eb26ae11f51f9,
|
||||
type: 3}
|
||||
--- !u!114 &1167921562079878720
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7365205897944721418}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: aea8774c865900040a6da881ffb56cff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
_interactionDistance: 2
|
||||
_interactionLayer:
|
||||
serializedVersion: 2
|
||||
m_Bits: 64
|
||||
--- !u!1 &9000961490938186306
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5695692478722095363}
|
||||
- component: {fileID: 5977935145271472401}
|
||||
- component: {fileID: 1078288945319979753}
|
||||
m_Layer: 0
|
||||
m_Name: Cube
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5695692478722095363
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9000961490938186306}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1.551, z: 0.278}
|
||||
m_LocalScale: {x: -0.53, y: 0.237468, z: 0.18214881}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1088927845179173297}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &5977935145271472401
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9000961490938186306}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &1078288945319979753
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 9000961490938186306}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: fec0256da2ed08b4f802e7554bdc5539, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
7
Assets/Player/Player.prefab.meta
Normal file
7
Assets/Player/Player.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f5470d57963c6745b2dd0da652da219
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -5,16 +5,29 @@ using UnityEngine.InputSystem;
|
||||
|
||||
public class PlayerController : BasicCharacter {
|
||||
|
||||
public static PlayerController Instance { get; private set; }
|
||||
|
||||
[SerializeField] private InputActionAsset _inputAsset;
|
||||
[SerializeField] private InputActionReference _movementAction;
|
||||
[SerializeField] private InputActionReference _interactionAction;
|
||||
|
||||
[SerializeField] private Transform _holderTransform;
|
||||
private Object _object;
|
||||
protected override void Awake() {
|
||||
base.Awake();
|
||||
if (_inputAsset == null) return;
|
||||
if (_inputAsset == null || _interactionAction == null) return;
|
||||
|
||||
_interactionAction.action.performed += ctx => _interactionBehaviour.Interact();
|
||||
|
||||
if (Instance != null) {
|
||||
Debug.LogError("What? 2 players crazy!!!");
|
||||
}
|
||||
Instance = this;
|
||||
}
|
||||
|
||||
|
||||
private void OnEnable() {
|
||||
if (_inputAsset == null) return;
|
||||
if (_inputAsset == null || _interactionAction == null) return;
|
||||
_inputAsset.Enable();
|
||||
}
|
||||
|
||||
@@ -25,15 +38,48 @@ public class PlayerController : BasicCharacter {
|
||||
|
||||
private void Update() {
|
||||
HandleMovementInput();
|
||||
HandleInteraction();
|
||||
}
|
||||
|
||||
|
||||
private void HandleInteraction() {
|
||||
if (_movementBehaviour == null)
|
||||
return;
|
||||
if(_interactionBehaviour == null)
|
||||
return;
|
||||
|
||||
_interactionBehaviour.HandleInteraction();
|
||||
}
|
||||
|
||||
void HandleMovementInput() {
|
||||
if (_movementBehaviour == null ||
|
||||
_movementAction == null)
|
||||
return;
|
||||
//movement
|
||||
float movementInput = _movementAction.action.ReadValue<float>();
|
||||
Vector3 movement = movementInput * Vector3.right;
|
||||
_movementBehaviour.DesiredMovementDirection = movement;
|
||||
Vector2 movementInput = _movementAction.action.ReadValue<Vector2>();
|
||||
Vector3 desiredDirection = new Vector3(movementInput.x, 0, movementInput.y);
|
||||
|
||||
_movementBehaviour.desiredMovementDirection = desiredDirection;
|
||||
_movementBehaviour.desiredLookDirection = desiredDirection;
|
||||
|
||||
}
|
||||
|
||||
//TODO: ask teacher if this is fine
|
||||
public Transform GetHolderTransform() {
|
||||
return _holderTransform;
|
||||
}
|
||||
|
||||
public void SetObject(Object obj) {
|
||||
_object = obj;
|
||||
}
|
||||
|
||||
public Object GetObject() {
|
||||
return _object;
|
||||
}
|
||||
|
||||
public void ClearObject() {
|
||||
_object = null;
|
||||
}
|
||||
|
||||
public bool HasObject() {
|
||||
return _object != null;
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,15 @@
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Interact",
|
||||
"type": "Button",
|
||||
"id": "5f632860-f320-4a6b-84e4-7d71f1a113bd",
|
||||
"expectedControlType": "Button",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
}
|
||||
],
|
||||
"bindings": [
|
||||
@@ -81,6 +90,72 @@
|
||||
"action": "Movement",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "ArrowKeys",
|
||||
"id": "a7e25e8a-26ce-490e-9b1d-72e58392b96c",
|
||||
"path": "2DVector",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": true,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "up",
|
||||
"id": "e142a693-ae41-4471-9ae0-9e11fc4ee3e1",
|
||||
"path": "<Keyboard>/upArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "down",
|
||||
"id": "6ad80496-fc8b-42c7-b045-f8069c950183",
|
||||
"path": "<Keyboard>/downArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "left",
|
||||
"id": "9bca1964-bfa7-40ce-a3de-919485a6e3fa",
|
||||
"path": "<Keyboard>/leftArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "right",
|
||||
"id": "ff0500d2-ac1a-4eca-954f-8ab57c1d108f",
|
||||
"path": "<Keyboard>/rightArrow",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Movement",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": true
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "c7b77db5-d2b6-492a-b8c3-9aff5ceac806",
|
||||
"path": "<Keyboard>/e",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": "",
|
||||
"action": "Interact",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
133
Assets/Player/SunglassesMat.mat
Normal file
133
Assets/Player/SunglassesMat.mat
Normal file
@@ -0,0 +1,133 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: SunglassesMat
|
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap:
|
||||
RenderType: Opaque
|
||||
disabledShaderPasses: []
|
||||
m_LockedProperties:
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AlphaClip: 0
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _BlendModePreserveSpecular: 1
|
||||
- _BumpScale: 1
|
||||
- _ClearCoatMask: 0
|
||||
- _ClearCoatSmoothness: 0
|
||||
- _Cull: 2
|
||||
- _Cutoff: 0.5
|
||||
- _DetailAlbedoMapScale: 1
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _EnvironmentReflections: 1
|
||||
- _GlossMapScale: 0
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
- _Metallic: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.005
|
||||
- _QueueOffset: 0
|
||||
- _ReceiveShadows: 1
|
||||
- _Smoothness: 0.5
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _WorkflowMode: 1
|
||||
- _ZWrite: 1
|
||||
m_Colors:
|
||||
- _BaseColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _Color: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
--- !u!114 &8414451965712518905
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
version: 7
|
||||
8
Assets/Player/SunglassesMat.mat.meta
Normal file
8
Assets/Player/SunglassesMat.mat.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fec0256da2ed08b4f802e7554bdc5539
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user