Changing GetKeyDown for weapon to GetKey because GetKeyDown is only true during the frame that a key is first pressed and false until the key is released and pressed again, while GetKey is true for all frames during which the key is being pressed
Separating checks for Q and E from check for Space to allow for changing color while shooting