Here’s a crouching script I’ve made with user SolarLune’s help.
All you need to do is hook it up with your camera’s controller and use a always sensor on it.
import bge
from bge import logic
from bge import events
cont = logic.getCurrentController()
obj = cont.owner
position = obj.position
key = logic.keyboard.events
SHIFTKEY = key[events.LEFTSHIFTKEY]
if not 'press' in obj:
obj['press'] = False
obj['return'] = False
limit = 1
if SHIFTKEY == 2:
if not obj['press']:
obj['press'] = True
if not obj['return']:
obj['initz'] = position[2]
obj['return'] = True
if obj['initz'] - position[2] < limit:
position[2] -= 0.1
else:
obj['press'] = False
if obj['return']:
if position[2] < obj['initz'] - .0001:
position[2] += .1
else:
obj['return'] = False