Role: Programmer + Designer

Frankenswoon is a single player, third person platformer in which the player navigates a graveyard as the head of Frankenstein’s monster, collecting hearts in hopes to swoon Ms. Frankenstein’s monster. The movement in the game is heavily influenced by the old toy Mighty Beanz — a small plastic capsule within which resides a small metal ball. It was made over two months in a team of 5 as a project for Vancouver Film School’s game design program. My primary role in the project was as a designer and as the sole programmer.

Frankenswoon

Mass Transfer Code

The movement system relied on adding torque to a capsule and swapping the center of mass to either the top or bottom of the capsule based on the orientation of the capsule. This is a fixed update for when the capsule is grounded.

// set the mass position based on the target masss position
_massPosition = Mathf.Lerp(_massPosition, _targetMassPosition, _massTransferSpeed * Time.fixedDeltaTime);

float previousMass = _targetMassPosition;

// only transfer center of mass if some time has passed since last transfer, to avoid getting stuck on side
if(Time.timeSinceLevelLoad >= _nextTransferTime)
{
    // update the target mass position based on whether it is facing up or down
    _targetMassPosition = (_bottomOfBean.transform.position.y > _topOfBean.transform.position.y) ? 1 : 0;
    _nextTransferTime = Time.timeSinceLevelLoad + _massTransferMinTime;
}

// play a grunt move sound if the target mass position is switched
if (previousMass != _targetMassPosition)
{
    _audioManager.PlayMoveSound();
}

// add torque to the rigidbody based on input
_rigidbody.AddTorque(_moveInput.z * _currentMoveForce * Camera.main.transform.right);
_rigidbody.AddTorque(_moveInput.x * _currentMoveForce * -Camera.main.transform.forward);

Previous
Previous

GrimKeeper

Next
Next

Quest for Valor