Hello in multiplayer course I created a new input action system and created both move and fire options. Even though move input works flawlesly Primary Fire option which is a left mouse click does not work. The funny part is i tried to assign space bar and it didn’t work as well. (I can get the debug log from start function so script is assigned to a gameobject without any problems).
WeaponController Script of mine:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WeaponController : MonoBehaviour
{
PlayerControls playerControls;
bool attackButtonDown = false;
bool isAttacking = false;
bool isOnCooldown = false;
[SerializeField] float attackCooldown = .5f;
private void Awake() {
playerControls = new PlayerControls();
}
private void Start() {
playerControls.Player.PrimaryFire.started += _ => StartAttacking();
playerControls.Player.PrimaryFire.canceled += _ => StopAttacking();
}
private void FixedUpdate() {
if(playerControls.Player.PrimaryFire.WasPerformedThisFrame() || playerControls.Player.PrimaryFire.WasPressedThisFrame())
Debug.Log("hmhmhmhmhm");
Fire();
}
private void StartAttacking()
{
attackButtonDown = true;
Debug.Log("start attacking");
}
private void StopAttacking()
{
attackButtonDown = false;
Debug.Log("stop attacking");
}
private void Fire()
{
if(attackButtonDown)
{
Debug.Log("Fire attack button down");
if(!isAttacking && !isOnCooldown)
{
isAttacking = true;
Debug.Log("Fire!");
isAttacking = false;
StartCoroutine(AttackCooldownRoutine());
}
}
}
private IEnumerator AttackCooldownRoutine()
{
isOnCooldown = true;
yield return new WaitForSeconds(attackCooldown);
isOnCooldown = false;
}
}
Player Controls Scripts created by Input Actions
//------------------------------------------------------------------------------
// <auto-generated>
// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator
// version 1.7.0
// from Assets/Scripts/Player/Input System/Player Controls.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 @PlayerControls: IInputActionCollection2, IDisposable
{
public InputActionAsset asset { get; }
public @PlayerControls()
{
asset = InputActionAsset.FromJson(@"{
""name"": ""Player Controls"",
""maps"": [
{
""name"": ""Player"",
""id"": ""6fb37706-05e5-48c6-ba27-c7b53eca560d"",
""actions"": [
{
""name"": ""Move"",
""type"": ""Value"",
""id"": ""8bc9d94f-b6aa-4c24-9f1f-c3735362b7ca"",
""expectedControlType"": ""Vector2"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": true
},
{
""name"": ""Primary Fire"",
""type"": ""Button"",
""id"": ""5d797312-4274-4a3e-8bff-63988fdefb92"",
""expectedControlType"": ""Button"",
""processors"": """",
""interactions"": """",
""initialStateCheck"": false
}
],
""bindings"": [
{
""name"": ""WASD"",
""id"": ""1b24183e-56c6-4f44-ad5e-450ea26a161c"",
""path"": ""2DVector"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Move"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""up"",
""id"": ""93302ebc-e08d-42f9-bd26-8aac6c0fab73"",
""path"": ""<Keyboard>/w"",
""interactions"": """",
""processors"": """",
""groups"": ""Mouse & Keyboard"",
""action"": ""Move"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""down"",
""id"": ""93c17be7-077a-4167-a3b0-c53808846a37"",
""path"": ""<Keyboard>/s"",
""interactions"": """",
""processors"": """",
""groups"": ""Mouse & Keyboard"",
""action"": ""Move"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""left"",
""id"": ""049151cd-9d4c-45be-940c-11c79fea7760"",
""path"": ""<Keyboard>/a"",
""interactions"": """",
""processors"": """",
""groups"": ""Mouse & Keyboard"",
""action"": ""Move"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""right"",
""id"": ""02a3f928-a0c2-4252-9662-afd32e31c030"",
""path"": ""<Keyboard>/d"",
""interactions"": """",
""processors"": """",
""groups"": ""Mouse & Keyboard"",
""action"": ""Move"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""Arrows"",
""id"": ""637cb13d-4656-4728-bff1-e63219055627"",
""path"": ""2DVector"",
""interactions"": """",
""processors"": """",
""groups"": """",
""action"": ""Move"",
""isComposite"": true,
""isPartOfComposite"": false
},
{
""name"": ""up"",
""id"": ""f12fb10e-ae26-4ebd-a50a-61e4c2876682"",
""path"": ""<Keyboard>/upArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Mouse & Keyboard"",
""action"": ""Move"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""down"",
""id"": ""0e2c56b7-5871-4204-9ec0-25ee2733d4d6"",
""path"": ""<Keyboard>/downArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Mouse & Keyboard"",
""action"": ""Move"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""left"",
""id"": ""01041b43-654e-4c15-a4a8-ed91c7201032"",
""path"": ""<Keyboard>/leftArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Mouse & Keyboard"",
""action"": ""Move"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": ""right"",
""id"": ""9cfb4f28-8520-4884-8159-f6041b498993"",
""path"": ""<Keyboard>/rightArrow"",
""interactions"": """",
""processors"": """",
""groups"": ""Mouse & Keyboard"",
""action"": ""Move"",
""isComposite"": false,
""isPartOfComposite"": true
},
{
""name"": """",
""id"": ""7bf66e0d-e42c-47f9-b021-078026f134ce"",
""path"": ""<Mouse>/leftButton"",
""interactions"": """",
""processors"": """",
""groups"": ""Mouse & Keyboard"",
""action"": ""Primary Fire"",
""isComposite"": false,
""isPartOfComposite"": false
}
]
}
],
""controlSchemes"": [
{
""name"": ""Mouse & Keyboard"",
""bindingGroup"": ""Mouse & Keyboard"",
""devices"": [
{
""devicePath"": ""<Keyboard>"",
""isOptional"": false,
""isOR"": false
},
{
""devicePath"": ""<Mouse>"",
""isOptional"": false,
""isOR"": false
}
]
}
]
}");
// Player
m_Player = asset.FindActionMap("Player", throwIfNotFound: true);
m_Player_Move = m_Player.FindAction("Move", throwIfNotFound: true);
m_Player_PrimaryFire = m_Player.FindAction("Primary Fire", 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_Move;
private readonly InputAction m_Player_PrimaryFire;
public struct PlayerActions
{
private @PlayerControls m_Wrapper;
public PlayerActions(@PlayerControls wrapper) { m_Wrapper = wrapper; }
public InputAction @Move => m_Wrapper.m_Player_Move;
public InputAction @PrimaryFire => m_Wrapper.m_Player_PrimaryFire;
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);
@Move.started += instance.OnMove;
@Move.performed += instance.OnMove;
@Move.canceled += instance.OnMove;
@PrimaryFire.started += instance.OnPrimaryFire;
@PrimaryFire.performed += instance.OnPrimaryFire;
@PrimaryFire.canceled += instance.OnPrimaryFire;
}
private void UnregisterCallbacks(IPlayerActions instance)
{
@Move.started -= instance.OnMove;
@Move.performed -= instance.OnMove;
@Move.canceled -= instance.OnMove;
@PrimaryFire.started -= instance.OnPrimaryFire;
@PrimaryFire.performed -= instance.OnPrimaryFire;
@PrimaryFire.canceled -= instance.OnPrimaryFire;
}
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_MouseKeyboardSchemeIndex = -1;
public InputControlScheme MouseKeyboardScheme
{
get
{
if (m_MouseKeyboardSchemeIndex == -1) m_MouseKeyboardSchemeIndex = asset.FindControlSchemeIndex("Mouse & Keyboard");
return asset.controlSchemes[m_MouseKeyboardSchemeIndex];
}
}
public interface IPlayerActions
{
void OnMove(InputAction.CallbackContext context);
void OnPrimaryFire(InputAction.CallbackContext context);
}
}