feat: basic two player one keyboard input

This commit is contained in:
Jakob Feldmann 2024-01-05 00:12:48 +01:00
parent 4b95e9a9ff
commit 730fe6f183
11 changed files with 948 additions and 268 deletions

View File

@ -0,0 +1,637 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator
// version 1.6.3
// from Assets/Input/InputActionMaps.inputactions
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Utilities;
public partial class @InputActionMaps: IInputActionCollection2, IDisposable
{
public InputActionAsset asset { get; }
public @InputActionMaps()
{
asset = InputActionAsset.FromJson(@"{
""name"": ""InputActionMaps"",
""maps"": [
{
""name"": ""Player"",
""id"": ""048b594b-7049-4378-97bf-bf33615ac9a2"",
""actions"": [
{
""name"": ""Thrust"",
""type"": ""Value"",
""id"": ""f49115e0-8e49-49d0-86d9-b401b5dc9a7e"",
""expectedControlType"": ""Axis"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": true
},
{
""name"": ""Steer"",
""type"": ""Value"",
""id"": ""b81175da-8d47-46a1-8d25-39d0aad32a7d"",
""expectedControlType"": ""Axis"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": true
},
{
""name"": ""Reset"",
""type"": ""Button"",
""id"": ""6ab0c9d5-b21f-4819-b5c8-ad277a1246c7"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
},
{
""name"": ""Boost"",
""type"": ""Button"",
""id"": ""c8819d8c-8dc4-4eb6-ae07-132d6fffbed4"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
}
],
""bindings"": [
{
""name"": ""ArrowUpDown"",
""id"": ""a4cf021d-ea53-421e-acc3-5512320a66c6"",
""path"": ""1DAxis"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Thrust"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""Negative"",
""id"": ""c57f6563-83fc-4287-947b-517897d60b48"",
""path"": ""<Keyboard>/downArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 1"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""Positive"",
""id"": ""887dfb71-2069-4f93-85bf-feb5d766a4e0"",
""path"": ""<Keyboard>/upArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 1"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""SW"",
""id"": ""530564dc-8d85-4da2-9dfe-de7226088d53"",
""path"": ""1DAxis"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Thrust"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""negative"",
""id"": ""638cd1c8-871c-4144-bc85-fd97073775e3"",
""path"": ""<Keyboard>/s"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 2"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""positive"",
""id"": ""41279947-f349-4d74-87f6-0150117546bc"",
""path"": ""<Keyboard>/w"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 2"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""Triggers"",
""id"": ""c23f737f-7d0b-44c9-adf2-af79bc907fe5"",
""path"": ""1DAxis"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Thrust"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""negative"",
""id"": ""efa56efa-cdbd-4a0c-942d-d9f63f34b41d"",
""path"": ""<Gamepad>/leftTrigger"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""positive"",
""id"": ""b09aaa96-ba43-4e88-a893-f68100d60f5d"",
""path"": ""<Gamepad>/rightTrigger"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""DPAD"",
""id"": ""553d2d70-1e91-4da5-a081-0d8b5932ed7f"",
""path"": ""1DAxis"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Thrust"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""negative"",
""id"": ""6d3b6aec-4165-44ff-b470-0757bf24e204"",
""path"": ""<Gamepad>/dpad/down"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""positive"",
""id"": ""ad2cd039-33a1-4217-88a3-a92cbe881eff"",
""path"": ""<Gamepad>/dpad/up"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""Buttons"",
""id"": ""c2bb8b7b-6b05-402f-8efd-88ee0b799a0b"",
""path"": ""1DAxis"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Thrust"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""negative"",
""id"": ""1f63525a-edbb-407f-9cc0-46c47fb83195"",
""path"": ""<Gamepad>/buttonWest"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""positive"",
""id"": ""dea46670-a213-4f87-b233-2da9e13c61d8"",
""path"": ""<Gamepad>/buttonSouth"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Thrust"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""ArrowLeftRight"",
""id"": ""9fb0a522-e3c2-4a96-abba-243a4d975417"",
""path"": ""1DAxis"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Steer"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""negative"",
""id"": ""8244e67c-862d-4290-81d9-166e37693466"",
""path"": ""<Keyboard>/leftArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 1"",
""action"": ""Steer"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""positive"",
""id"": ""76453859-ad22-4689-8468-2f8f70a0e62f"",
""path"": ""<Keyboard>/rightArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 1"",
""action"": ""Steer"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""AD"",
""id"": ""37147163-13e3-42c9-bd71-b98dd06b17d7"",
""path"": ""1DAxis"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Steer"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""negative"",
""id"": ""9ab0d63e-3836-40bf-969a-dd963113eb4b"",
""path"": ""<Keyboard>/a"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 2"",
""action"": ""Steer"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""positive"",
""id"": ""2bb17c0d-1ff6-446d-8963-7e83b44007fe"",
""path"": ""<Keyboard>/d"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 2"",
""action"": ""Steer"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""DPAD"",
""id"": ""2d7e4f88-0f00-440f-a4d9-4ed030ca5aee"",
""path"": ""1DAxis"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Steer"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""negative"",
""id"": ""ea165035-cea6-44cb-9cdf-9d004a1c27e8"",
""path"": ""<Gamepad>/dpad/left"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Steer"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""positive"",
""id"": ""5a0913b9-2745-49df-9996-df7f530dab22"",
""path"": ""<Gamepad>/dpad/right"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Steer"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""LeftStickX"",
""id"": ""42630580-938e-4cab-9747-35f1ea15fc9a"",
""path"": ""1DAxis"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Steer"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""negative"",
""id"": ""30818f05-cc2e-42f8-a656-a9237d9ae1ff"",
""path"": ""<Gamepad>/leftStick/left"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Steer"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""positive"",
""id"": ""5939b118-47b4-4558-9b18-23d77cc433c1"",
""path"": ""<Gamepad>/leftStick/right"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Steer"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": """",
""id"": ""8c09092a-7323-4f5c-80df-19bfe90a207c"",
""path"": ""<Keyboard>/r"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 1;Keyboard 2"",
""action"": ""Reset"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""b50ff906-5e23-4bd0-b5b7-98aeb46a2284"",
""path"": ""<Gamepad>/select"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Reset"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""f76aad49-c115-4d72-a860-b674c8489543"",
""path"": ""<Keyboard>/ctrl"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 1"",
""action"": ""Boost"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""90de50d0-0adf-41c0-b8d2-ffd9ff0d55f2"",
""path"": ""<Keyboard>/shift"",
""interactions"": """",
""processors"": """",
""groups"": ""Keyboard 2"",
""action"": ""Boost"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""175de4ed-6b10-420d-bc46-5abf4b21486f"",
""path"": ""<Gamepad>/buttonEast"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Boost"",
""isComposite"": false,
""isPartOfComposite"": false
},
{
""name"": """",
""id"": ""a7d544cb-7418-4091-bb4a-5e24cafb4bec"",
""path"": ""<Gamepad>/leftShoulder"",
""interactions"": """",
""processors"": """",
""groups"": ""Controller"",
""action"": ""Boost"",
""isComposite"": false,
""isPartOfComposite"": false
}
]
}
],
""controlSchemes"": [
{
""name"": ""Controller"",
""bindingGroup"": ""Controller"",
""devices"": [
{
""devicePath"": ""<Gamepad>"",
""isOptional"": false,
""isOR"": false
}
]
},
{
""name"": ""Keyboard 1"",
""bindingGroup"": ""Keyboard 1"",
""devices"": [
{
""devicePath"": ""<Keyboard>"",
""isOptional"": false,
""isOR"": false
}
]
},
{
""name"": ""Keyboard 2"",
""bindingGroup"": ""Keyboard 2"",
""devices"": [
{
""devicePath"": ""<Keyboard>"",
""isOptional"": false,
""isOR"": false
}
]
}
]
}");
// Player
m_Player = asset.FindActionMap("Player", throwIfNotFound: true);
m_Player_Thrust = m_Player.FindAction("Thrust", throwIfNotFound: true);
m_Player_Steer = m_Player.FindAction("Steer", throwIfNotFound: true);
m_Player_Reset = m_Player.FindAction("Reset", throwIfNotFound: true);
m_Player_Boost = m_Player.FindAction("Boost", throwIfNotFound: true);
}
public void Dispose()
{
UnityEngine.Object.Destroy(asset);
}
public InputBinding? bindingMask
{
get => asset.bindingMask;
set => asset.bindingMask = value;
}
public ReadOnlyArray<InputDevice>? devices
{
get => asset.devices;
set => asset.devices = value;
}
public ReadOnlyArray<InputControlScheme> controlSchemes => asset.controlSchemes;
public bool Contains(InputAction action)
{
return asset.Contains(action);
}
public IEnumerator<InputAction> GetEnumerator()
{
return asset.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public void Enable()
{
asset.Enable();
}
public void Disable()
{
asset.Disable();
}
public IEnumerable<InputBinding> bindings => asset.bindings;
public InputAction FindAction(string actionNameOrId, bool throwIfNotFound = false)
{
return asset.FindAction(actionNameOrId, throwIfNotFound);
}
public int FindBinding(InputBinding bindingMask, out InputAction action)
{
return asset.FindBinding(bindingMask, out action);
}
// Player
private readonly InputActionMap m_Player;
private List<IPlayerActions> m_PlayerActionsCallbackInterfaces = new List<IPlayerActions>();
private readonly InputAction m_Player_Thrust;
private readonly InputAction m_Player_Steer;
private readonly InputAction m_Player_Reset;
private readonly InputAction m_Player_Boost;
public struct PlayerActions
{
private @InputActionMaps m_Wrapper;
public PlayerActions(@InputActionMaps wrapper) { m_Wrapper = wrapper; }
public InputAction @Thrust => m_Wrapper.m_Player_Thrust;
public InputAction @Steer => m_Wrapper.m_Player_Steer;
public InputAction @Reset => m_Wrapper.m_Player_Reset;
public InputAction @Boost => m_Wrapper.m_Player_Boost;
public InputActionMap Get() { return m_Wrapper.m_Player; }
public void Enable() { Get().Enable(); }
public void Disable() { Get().Disable(); }
public bool enabled => Get().enabled;
public static implicit operator InputActionMap(PlayerActions set) { return set.Get(); }
public void AddCallbacks(IPlayerActions instance)
{
if (instance == null || m_Wrapper.m_PlayerActionsCallbackInterfaces.Contains(instance)) return;
m_Wrapper.m_PlayerActionsCallbackInterfaces.Add(instance);
@Thrust.started += instance.OnThrust;
@Thrust.performed += instance.OnThrust;
@Thrust.canceled += instance.OnThrust;
@Steer.started += instance.OnSteer;
@Steer.performed += instance.OnSteer;
@Steer.canceled += instance.OnSteer;
@Reset.started += instance.OnReset;
@Reset.performed += instance.OnReset;
@Reset.canceled += instance.OnReset;
@Boost.started += instance.OnBoost;
@Boost.performed += instance.OnBoost;
@Boost.canceled += instance.OnBoost;
}
private void UnregisterCallbacks(IPlayerActions instance)
{
@Thrust.started -= instance.OnThrust;
@Thrust.performed -= instance.OnThrust;
@Thrust.canceled -= instance.OnThrust;
@Steer.started -= instance.OnSteer;
@Steer.performed -= instance.OnSteer;
@Steer.canceled -= instance.OnSteer;
@Reset.started -= instance.OnReset;
@Reset.performed -= instance.OnReset;
@Reset.canceled -= instance.OnReset;
@Boost.started -= instance.OnBoost;
@Boost.performed -= instance.OnBoost;
@Boost.canceled -= instance.OnBoost;
}
public void RemoveCallbacks(IPlayerActions instance)
{
if (m_Wrapper.m_PlayerActionsCallbackInterfaces.Remove(instance))
UnregisterCallbacks(instance);
}
public void SetCallbacks(IPlayerActions instance)
{
foreach (var item in m_Wrapper.m_PlayerActionsCallbackInterfaces)
UnregisterCallbacks(item);
m_Wrapper.m_PlayerActionsCallbackInterfaces.Clear();
AddCallbacks(instance);
}
}
public PlayerActions @Player => new PlayerActions(this);
private int m_ControllerSchemeIndex = -1;
public InputControlScheme ControllerScheme
{
get
{
if (m_ControllerSchemeIndex == -1) m_ControllerSchemeIndex = asset.FindControlSchemeIndex("Controller");
return asset.controlSchemes[m_ControllerSchemeIndex];
}
}
private int m_Keyboard1SchemeIndex = -1;
public InputControlScheme Keyboard1Scheme
{
get
{
if (m_Keyboard1SchemeIndex == -1) m_Keyboard1SchemeIndex = asset.FindControlSchemeIndex("Keyboard 1");
return asset.controlSchemes[m_Keyboard1SchemeIndex];
}
}
private int m_Keyboard2SchemeIndex = -1;
public InputControlScheme Keyboard2Scheme
{
get
{
if (m_Keyboard2SchemeIndex == -1) m_Keyboard2SchemeIndex = asset.FindControlSchemeIndex("Keyboard 2");
return asset.controlSchemes[m_Keyboard2SchemeIndex];
}
}
public interface IPlayerActions
{
void OnThrust(InputAction.CallbackContext context);
void OnSteer(InputAction.CallbackContext context);
void OnReset(InputAction.CallbackContext context);
void OnBoost(InputAction.CallbackContext context);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fe00474875c3cc94bbbf8cbf03d828c0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -8,7 +8,7 @@ ScriptedImporter:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
generateWrapperCode: 0 generateWrapperCode: 1
wrapperCodePath: wrapperCodePath:
wrapperClassName: wrapperClassName:
wrapperCodeNamespace: wrapperCodeNamespace:

View File

@ -125,7 +125,7 @@ Material:
- _WorkflowMode: 1 - _WorkflowMode: 1
- _ZWrite: 1 - _ZWrite: 1
- _base_alpha: 0.41 - _base_alpha: 0.41
- _impact_amplitude: 0.08 - _impact_amplitude: 0
- _impact_anim: 0 - _impact_anim: 0
- _impact_blend: 0 - _impact_blend: 0
- _impact_density: 20 - _impact_density: 20
@ -145,6 +145,6 @@ Material:
- _EmissionColor: {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} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
- _impact_origin: {r: 1, g: 0, b: -0.3, a: 1} - _impact_origin: {r: 1, g: 0, b: -0.3, a: 1}
- _rotation: {r: 0.1, g: 0, b: 0, a: 1} - _rotation: {r: 0, g: 0, b: 0, a: 1}
- _shield_color: {r: 0, g: 1, b: 0.7743149, a: 1} - _shield_color: {r: 0, g: 1, b: 0.7743149, a: 1}
m_BuildTextureStacks: [] m_BuildTextureStacks: []

View File

@ -90,6 +90,7 @@ Transform:
m_Children: m_Children:
- {fileID: 6850768006170588356} - {fileID: 6850768006170588356}
- {fileID: 8774249858192466318} - {fileID: 8774249858192466318}
- {fileID: 6166152332587307364}
- {fileID: 8696699156449457255} - {fileID: 8696699156449457255}
- {fileID: 5758221365909025383} - {fileID: 5758221365909025383}
- {fileID: 7227660392512793521} - {fileID: 7227660392512793521}
@ -185,7 +186,7 @@ MonoBehaviour:
m_ActionId: c8819d8c-8dc4-4eb6-ae07-132d6fffbed4 m_ActionId: c8819d8c-8dc4-4eb6-ae07-132d6fffbed4
m_ActionName: Player/Boost[/Keyboard/ctrl,/Keyboard/shift,/XInputControllerWindows/buttonEast,/XInputControllerWindows/leftShoulder] m_ActionName: Player/Boost[/Keyboard/ctrl,/Keyboard/shift,/XInputControllerWindows/buttonEast,/XInputControllerWindows/leftShoulder]
m_NeverAutoSwitchControlSchemes: 1 m_NeverAutoSwitchControlSchemes: 1
m_DefaultControlScheme: m_DefaultControlScheme: Controller
m_DefaultActionMap: Player m_DefaultActionMap: Player
m_SplitScreenIndex: -1 m_SplitScreenIndex: -1
m_Camera: {fileID: 0} m_Camera: {fileID: 0}
@ -301,6 +302,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 2b6244fd2a6ceee4ab8504fadf75ae20, type: 3} m_Script: {fileID: 11500000, guid: 2b6244fd2a6ceee4ab8504fadf75ae20, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
cameraOperator: {fileID: 0}
thrustAcceleration: 1500 thrustAcceleration: 1500
steerVelocity: 300 steerVelocity: 300
normalMaxVelocity: 25 normalMaxVelocity: 25
@ -317,8 +319,10 @@ MonoBehaviour:
boostAntiGravityFactor: 0.8 boostAntiGravityFactor: 0.8
tackleStunFactor: 0.1 tackleStunFactor: 0.1
tackleStunTime: 0.6 tackleStunTime: 0.6
tacklePowerFactor: 50 tacklePowerFactor: 30
boostUI: {fileID: 4200181511080825266} boostUI: {fileID: 4200181511080825266}
playerInput: {fileID: 0}
instanceID: 0
--- !u!1 &4451848836747234632 --- !u!1 &4451848836747234632
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -402,6 +406,61 @@ MeshRenderer:
m_SortingLayer: 0 m_SortingLayer: 0
m_SortingOrder: 0 m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0} m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &7665455622387539610
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6166152332587307364}
- component: {fileID: 1551560316097652998}
m_Layer: 7
m_Name: BodyArea
m_TagString: Vulnerable
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6166152332587307364
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7665455622387539610}
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: []
m_Father: {fileID: 5458316571244832082}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!136 &1551560316097652998
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7665455622387539610}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.57511306
m_Height: 2.3651605
m_Direction: 1
m_Center: {x: 0, y: -0.2, z: 0}
--- !u!1 &8319233940171307812 --- !u!1 &8319233940171307812
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -37,6 +37,7 @@ Transform:
m_Children: m_Children:
- {fileID: 2763216851625110643} - {fileID: 2763216851625110643}
- {fileID: 1065332109104514168} - {fileID: 1065332109104514168}
- {fileID: 2323253733787261421}
- {fileID: 3900807414520724371} - {fileID: 3900807414520724371}
- {fileID: 2308728980078667632} - {fileID: 2308728980078667632}
m_Father: {fileID: 0} m_Father: {fileID: 0}
@ -131,7 +132,7 @@ MonoBehaviour:
m_ActionId: c8819d8c-8dc4-4eb6-ae07-132d6fffbed4 m_ActionId: c8819d8c-8dc4-4eb6-ae07-132d6fffbed4
m_ActionName: Player/Boost[/Keyboard/ctrl,/Keyboard/shift,/XInputControllerWindows/buttonEast,/XInputControllerWindows/leftShoulder] m_ActionName: Player/Boost[/Keyboard/ctrl,/Keyboard/shift,/XInputControllerWindows/buttonEast,/XInputControllerWindows/leftShoulder]
m_NeverAutoSwitchControlSchemes: 1 m_NeverAutoSwitchControlSchemes: 1
m_DefaultControlScheme: m_DefaultControlScheme: Controller
m_DefaultActionMap: Player m_DefaultActionMap: Player
m_SplitScreenIndex: -1 m_SplitScreenIndex: -1
m_Camera: {fileID: 0} m_Camera: {fileID: 0}
@ -247,6 +248,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 2b6244fd2a6ceee4ab8504fadf75ae20, type: 3} m_Script: {fileID: 11500000, guid: 2b6244fd2a6ceee4ab8504fadf75ae20, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
cameraOperator: {fileID: 0}
thrustAcceleration: 1500 thrustAcceleration: 1500
steerVelocity: 300 steerVelocity: 300
normalMaxVelocity: 25 normalMaxVelocity: 25
@ -257,14 +259,16 @@ MonoBehaviour:
maximumDrag: 6 maximumDrag: 6
torqueDrag: 10 torqueDrag: 10
maxBoostCapacity: 3 maxBoostCapacity: 3
minBoostCapacity: 1 minBoostCapacity: 0.6
boostMagnitude: 2.5 boostMagnitude: 2.5
outsideBoostRate: 0 outsideBoostRate: 0
boostAntiGravityFactor: 0.8 boostAntiGravityFactor: 0.8
tackleStunFactor: 0.1 tackleStunFactor: 0.1
tackleStunTime: 0.6 tackleStunTime: 0.6
tacklePowerFactor: 50 tacklePowerFactor: 30
boostUI: {fileID: 3576024133074538910} boostUI: {fileID: 3576024133074538910}
playerInput: {fileID: 0}
instanceID: 0
--- !u!1 &3218284673077589540 --- !u!1 &3218284673077589540
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -456,6 +460,61 @@ CapsuleCollider:
m_Height: 1.3338675 m_Height: 1.3338675
m_Direction: 0 m_Direction: 0
m_Center: {x: -0.000009298325, y: -0.025820732, z: 0} m_Center: {x: -0.000009298325, y: -0.025820732, z: 0}
--- !u!1 &7085924197508447212
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2323253733787261421}
- component: {fileID: 7345168250516523601}
m_Layer: 7
m_Name: BodyArea
m_TagString: Vulnerable
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2323253733787261421
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7085924197508447212}
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: []
m_Father: {fileID: 4137950278346515597}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!136 &7345168250516523601
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7085924197508447212}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 2
m_Radius: 0.57511306
m_Height: 2.3651605
m_Direction: 1
m_Center: {x: 0, y: -0.2, z: 0}
--- !u!1001 &8054534206256546014 --- !u!1001 &8054534206256546014
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0

View File

@ -321,10 +321,6 @@ PrefabInstance:
propertyPath: m_Name propertyPath: m_Name
value: Player Gray value: Player Gray
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 2068562511677553606, guid: 105162f72bf50c84aaf92b1ca494ed3b, type: 3}
propertyPath: m_NeverAutoSwitchControlSchemes
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4137950278346515597, guid: 105162f72bf50c84aaf92b1ca494ed3b, type: 3} - target: {fileID: 4137950278346515597, guid: 105162f72bf50c84aaf92b1ca494ed3b, type: 3}
propertyPath: m_LocalPosition.x propertyPath: m_LocalPosition.x
value: -10 value: -10
@ -365,6 +361,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 8932415214367391550, guid: 105162f72bf50c84aaf92b1ca494ed3b, type: 3}
propertyPath: cameraOperator
value:
objectReference: {fileID: 963194229}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
@ -550,108 +550,7 @@ MonoBehaviour:
m_EditorClassIdentifier: m_EditorClassIdentifier:
zone: {fileID: 1361581065} zone: {fileID: 1361581065}
announcements: {fileID: 2052728261} announcements: {fileID: 2052728261}
--- !u!1 &895482937 minPlayerCount: 2
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 895482939}
- component: {fileID: 895482938}
- component: {fileID: 895482940}
m_Layer: 0
m_Name: PlayerManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &895482938
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 895482937}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 621567455fd1c4ceb811cc8a00b6a1a5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_NotificationBehavior: 2
m_MaxPlayerCount: 2
m_AllowJoining: 1
m_JoinBehavior: 0
m_PlayerJoinedEvent:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 895482940}
m_TargetAssemblyTypeName: PlayerManager, Assembly-CSharp
m_MethodName: OnPlayerJoined
m_Mode: 0
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
m_PlayerLeftEvent:
m_PersistentCalls:
m_Calls: []
m_JoinAction:
m_UseReference: 0
m_Action:
m_Name:
m_Type: 0
m_ExpectedControlType:
m_Id:
m_Processors:
m_Interactions:
m_SingletonActionBindings: []
m_Flags: 0
m_Reference: {fileID: 0}
m_PlayerPrefab: {fileID: 2111858426991004505, guid: d247a5257c4a6774399dc902f311b653, type: 3}
m_SplitScreen: 0
m_MaintainAspectRatioInSplitScreen: 0
m_FixedNumberOfSplitScreens: -1
m_SplitScreenRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
--- !u!4 &895482939
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 895482937}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -9.660311, y: -6.734341, z: 64.1785}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &895482940
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 895482937}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: af7ba7ecba068a342ac96ba1df059373, type: 3}
m_Name:
m_EditorClassIdentifier:
cameraOperator: {fileID: 963194229}
--- !u!1 &963194225 --- !u!1 &963194225
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -802,124 +701,6 @@ MonoBehaviour:
mipBias: 0 mipBias: 0
varianceClampScale: 0.9 varianceClampScale: 0.9
contrastAdaptiveSharpening: 0 contrastAdaptiveSharpening: 0
--- !u!1 &1026075974
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1026075977}
- component: {fileID: 1026075976}
- component: {fileID: 1026075975}
m_Layer: 0
m_Name: Directional Light (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!114 &1026075975
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1026075974}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 3
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_RenderingLayers: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_ShadowRenderingLayers: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 0
--- !u!108 &1026075976
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1026075974}
m_Enabled: 0
serializedVersion: 10
m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_Shadows:
m_Type: 0
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &1026075977
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1026075974}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -50}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1119422545 --- !u!1001 &1119422545
PrefabInstance: PrefabInstance:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -972,10 +753,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z propertyPath: m_LocalEulerAnglesHint.z
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 9136370446038472296, guid: d247a5257c4a6774399dc902f311b653, type: 3} - target: {fileID: 7382138887082377466, guid: d247a5257c4a6774399dc902f311b653, type: 3}
propertyPath: m_NeverAutoSwitchControlSchemes propertyPath: cameraOperator
value: 1 value:
objectReference: {fileID: 0} objectReference: {fileID: 963194229}
m_RemovedComponents: [] m_RemovedComponents: []
m_RemovedGameObjects: [] m_RemovedGameObjects: []
m_AddedGameObjects: [] m_AddedGameObjects: []
@ -1176,9 +957,6 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: -8098169881513260187, guid: 303177f7648454b4fb8179c1378dd1ec, type: 3} - targetCorrespondingSourceObject: {fileID: -8098169881513260187, guid: 303177f7648454b4fb8179c1378dd1ec, type: 3}
insertIndex: -1 insertIndex: -1
addedObject: {fileID: 1361581065} addedObject: {fileID: 1361581065}
- targetCorrespondingSourceObject: {fileID: -8098169881513260187, guid: 303177f7648454b4fb8179c1378dd1ec, type: 3}
insertIndex: -1
addedObject: {fileID: 1361581068}
m_SourcePrefab: {fileID: 3150474306388093854, guid: 303177f7648454b4fb8179c1378dd1ec, type: 3} m_SourcePrefab: {fileID: 3150474306388093854, guid: 303177f7648454b4fb8179c1378dd1ec, type: 3}
--- !u!1 &1361581064 stripped --- !u!1 &1361581064 stripped
GameObject: GameObject:
@ -1218,20 +996,6 @@ BoxCollider:
serializedVersion: 3 serializedVersion: 3
m_Size: {x: 1.5, y: 0.1, z: 1.5} m_Size: {x: 1.5, y: 0.1, z: 1.5}
m_Center: {x: 0, y: 0, z: -0.75} m_Center: {x: 0, y: 0, z: -0.75}
--- !u!114 &1361581068
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1361581064}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1211ce015fd3676469a8844316d4b944, type: 3}
m_Name:
m_EditorClassIdentifier:
zone: {fileID: 0}
announcements: {fileID: 0}
--- !u!1 &1659830375 --- !u!1 &1659830375
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1613,10 +1377,8 @@ SceneRoots:
m_Roots: m_Roots:
- {fileID: 796181415} - {fileID: 796181415}
- {fileID: 2052728260} - {fileID: 2052728260}
- {fileID: 895482939}
- {fileID: 963194228} - {fileID: 963194228}
- {fileID: 8179556} - {fileID: 8179556}
- {fileID: 1026075977}
- {fileID: 2000082937} - {fileID: 2000082937}
- {fileID: 1185564593} - {fileID: 1185564593}
- {fileID: 1748381166} - {fileID: 1748381166}

View File

@ -1,3 +1,4 @@
using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using TMPro; using TMPro;
@ -8,34 +9,48 @@ public class Announcments : MonoBehaviour
{ {
[SerializeField] TextMeshProUGUI announcementText; [SerializeField] TextMeshProUGUI announcementText;
private float announcmentTime;
private float remainingTime; private float remainingTime;
void Start() void Start()
{ {
announcementText.enabled = false; announcementText.enabled = false;
enabled = false;
} }
void Update() void Update()
{ {
if (remainingTime > 0) if (remainingTime > 0)
{ {
if (!announcementText.enabled)
{
announcementText.enabled = true;
}
remainingTime -= Time.deltaTime; remainingTime -= Time.deltaTime;
} }
else else
{ {
announcementText.enabled = false; announcementText.enabled = false;
remainingTime = 0; remainingTime = 0;
enabled = false;
} }
} }
public void AnnounceText(string text, float time) public void AnnounceText(string text, float time)
{ {
announcementText.text = text; announcementText.text = text;
announcementText.enabled = true;
remainingTime = time; remainingTime = time;
enabled = true;
}
public void AnnounceText(string text)
{
announcementText.text = text;
announcementText.enabled = true;
enabled = false;
}
public void StopAnnouncement()
{
announcementText.text = String.Empty;
remainingTime = 0;
announcementText.enabled = false;
enabled = false;
} }
} }

View File

@ -11,6 +11,7 @@ using static UnityEngine.Mathf;
public class CameraOperator : MonoBehaviour public class CameraOperator : MonoBehaviour
{ {
private Dictionary<int, GameObject> players = new Dictionary<int, GameObject>(); private Dictionary<int, GameObject> players = new Dictionary<int, GameObject>();
public void AddPlayer(GameObject player) public void AddPlayer(GameObject player)
{ {
players[player.GetInstanceID()] = player; players[player.GetInstanceID()] = player;

View File

@ -1,13 +1,36 @@
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
using Palmmedia.ReportGenerator.Core.Reporting.Builders;
using UnityEditor.Experimental.Licensing;
using UnityEngine; using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Users;
using UnityEngine.InputSystem.Utilities;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
using static InputActionMaps;
public enum GameState { Starting, Match, End, Paused }
public class GameManager : MonoBehaviour public class GameManager : MonoBehaviour
{ {
public static GameManager GM { get; private set; }
[SerializeField] ZoneRules zone; [SerializeField] ZoneRules zone;
[SerializeField] Announcments announcements; [SerializeField] Announcments announcements;
private bool gameLost = false; [SerializeField] int minPlayerCount = 2;
public GameState currentState { get; private set; }
private Dictionary<int, PlayerController> players = new Dictionary<int, PlayerController>();
private Dictionary<int, string> playerControlSchemes = new Dictionary<int, string>();
private float restartMatchTime = 0; private float restartMatchTime = 0;
private ControlSchemeDetection controlSchemeDetector;
void Awake()
{
if (GM == null)
{
GM = this;
}
}
void Update() void Update()
{ {
@ -15,7 +38,7 @@ public class GameManager : MonoBehaviour
{ {
restartMatchTime -= Time.deltaTime; restartMatchTime -= Time.deltaTime;
} }
else if (gameLost) else if (currentState == GameState.End)
{ {
restartMatchTime = 0; restartMatchTime = 0;
StartNewMatch(); StartNewMatch();
@ -24,6 +47,16 @@ public class GameManager : MonoBehaviour
// Start is called before the first frame update // Start is called before the first frame update
void Start() void Start()
{
currentState = GameState.Starting;
controlSchemeDetector = new ControlSchemeDetection();
controlSchemeDetector.ControlSchemeDetected += AssignPlayerControls;
controlSchemeDetector.EnableDetection();
announcements.AnnounceText("You both press a key \n on your controll scheme of choice \n to start the match");
enabled = false;
}
void StartMatch()
{ {
if (zone != null) if (zone != null)
{ {
@ -31,18 +64,21 @@ public class GameManager : MonoBehaviour
} }
if (announcements != null) if (announcements != null)
{ {
announcements.StopAnnouncement();
announcements.AnnounceText("Match Start", 1.6f); announcements.AnnounceText("Match Start", 1.6f);
} }
} }
private void CheckLosingCondition(GameObject go) private void CheckLosingCondition(GameObject go)
{ {
if (!go.CompareTag("Player") || gameLost) if (!go.CompareTag("Player") || currentState == GameState.End)
return; return;
gameLost = true; currentState = GameState.End;
Destroy(go); Destroy(go);
announcements.AnnounceText(go.name + " has lost the match", 2f); announcements.AnnounceText(go.name + " has lost the match", 2f);
restartMatchTime = 2.2f; restartMatchTime = 2.2f;
players.Clear();
enabled = true;
} }
private void StartNewMatch() private void StartNewMatch()
@ -51,4 +87,97 @@ public class GameManager : MonoBehaviour
SceneManager.LoadScene(currentSceneName); SceneManager.LoadScene(currentSceneName);
} }
public void RegisterPlayer(PlayerController pc)
{
if (!players.ContainsKey(pc.instanceID))
{
players[pc.instanceID] = pc;
}
}
private void AssignPlayerControls(object sender, string controlScheme)
{
if (players.Count < minPlayerCount)
{
return;
}
if (players.Count <= playerControlSchemes.Count)
{
controlSchemeDetector.DisableDetection();
currentState = GameState.Match;
StartMatch();
return;
}
foreach (int playerId in players.Keys)
{
if (playerControlSchemes.ContainsValue(controlScheme))
{
return;
}
if (playerControlSchemes.ContainsKey(playerId))
{
continue;
}
PlayerController pc = players[playerId];
if (controlScheme.Contains("Keyboard"))
{
pc.playerInput.SwitchCurrentControlScheme(controlScheme, Keyboard.current);
}
else if (controlScheme.Contains("Controller"))
{
pc.playerInput.SwitchCurrentControlScheme(controlScheme, Gamepad.current);
}
playerControlSchemes[playerId] = controlScheme;
}
}
}
public class ControlSchemeDetection : IPlayerActions
{
InputActionMaps actionMaps;
public event EventHandler<string> ControlSchemeDetected;
public ControlSchemeDetection()
{
actionMaps = new InputActionMaps();
actionMaps.Player.SetCallbacks(this);
}
public void EnableDetection()
{
actionMaps.Player.Enable();
}
public void DisableDetection()
{
actionMaps.Player.Disable();
}
public void OnBoost(InputAction.CallbackContext context)
{
readControlScheme(context);
}
public void OnReset(InputAction.CallbackContext context)
{
readControlScheme(context);
}
public void OnSteer(InputAction.CallbackContext context)
{
readControlScheme(context);
}
public void OnThrust(InputAction.CallbackContext context)
{
readControlScheme(context);
}
public void readControlScheme(InputAction.CallbackContext context)
{
int bindingIndex = context.action.GetBindingIndexForControl(context.control);
InputBinding binding = context.action.bindings[bindingIndex];
string controlScheme = binding.groups.Split(';')[0];
ControlSchemeDetected.Invoke(this, controlScheme);
}
} }

View File

@ -1,5 +1,4 @@
using System; using System;
using GLTFast.Schema;
using UnityEngine; using UnityEngine;
using UnityEngine.InputSystem; using UnityEngine.InputSystem;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
@ -8,6 +7,7 @@ using static AffectingForcesManager;
public class PlayerController : MonoBehaviour public class PlayerController : MonoBehaviour
{ {
// Private variables // Private variables
[SerializeField] private CameraOperator cameraOperator;
[SerializeField] private float thrustAcceleration = 400; [SerializeField] private float thrustAcceleration = 400;
[SerializeField] private float steerVelocity = 30; [SerializeField] private float steerVelocity = 30;
[SerializeField] private float normalMaxVelocity = 10; [SerializeField] private float normalMaxVelocity = 10;
@ -28,6 +28,7 @@ public class PlayerController : MonoBehaviour
[SerializeField, Range(0, 1000)] private float tacklePowerFactor = 10f; [SerializeField, Range(0, 1000)] private float tacklePowerFactor = 10f;
[SerializeField] private BoostCapacityUI boostUI; [SerializeField] private BoostCapacityUI boostUI;
private AffectingForcesManager forceManager; private AffectingForcesManager forceManager;
public PlayerInput playerInput;
private Rigidbody body; private Rigidbody body;
private Vector3 currentGravity = new Vector3(); private Vector3 currentGravity = new Vector3();
// Saves the current input value for thrust // Saves the current input value for thrust
@ -41,7 +42,7 @@ public class PlayerController : MonoBehaviour
private float tackledTime = 0f; private float tackledTime = 0f;
// Current Zone the player occupies // Current Zone the player occupies
private Zone zone = Zone.NimbleZone; private Zone zone = Zone.NimbleZone;
private int instanceID; public int instanceID;
void Awake() void Awake()
{ {
@ -50,6 +51,7 @@ public class PlayerController : MonoBehaviour
forceManager = GameObject.FindGameObjectWithTag("ForceManager").GetComponent<AffectingForcesManager>(); forceManager = GameObject.FindGameObjectWithTag("ForceManager").GetComponent<AffectingForcesManager>();
} }
body = GetComponent<Rigidbody>(); body = GetComponent<Rigidbody>();
playerInput = GetComponent<PlayerInput>();
} }
// Start is called before the first frame update // Start is called before the first frame update
@ -58,12 +60,17 @@ public class PlayerController : MonoBehaviour
instanceID = gameObject.GetInstanceID(); instanceID = gameObject.GetInstanceID();
boostCapacity = maxBoostCapacity; boostCapacity = maxBoostCapacity;
boostUI.SetMinBoostRatio(minBoostCapacity / maxBoostCapacity); boostUI.SetMinBoostRatio(minBoostCapacity / maxBoostCapacity);
GameManager.GM.RegisterPlayer(this);
cameraOperator.AddPlayer(gameObject);
} }
// Update is called once per frame // Update is called once per frame
void FixedUpdate() void FixedUpdate()
{ {
if (GameManager.GM.currentState == GameState.Starting)
{
return;
}
zone = forceManager.GetZoneOfInstance(instanceID); zone = forceManager.GetZoneOfInstance(instanceID);
//BoostStateUpdate(Time.deltaTime); //BoostStateUpdate(Time.deltaTime);
// Rotate the vehicle with the current steer velocity // Rotate the vehicle with the current steer velocity