Взгляните на SneakyInput для cocos2D, который имеет как аналоговую, так и D-pad реализацию. Если вы уже используете его, просто установите следующие свойства для цифровой реализации:
joystick.isDPad = YES;
joystick.numberofDirections = 8; //8-directional