Ian Fitzsimmons
I’m 20 years old and I have my own indie game development company and been working with game development for around a decade. With experience in Unity, Visual Studio, C++, and c# alongside marketing, sound design, gameplay design, and environment design!
I hope to branch out in the gaming industry and connect with other passionate people and work on great projects
GAMES
ENEMIES (2021)
You start on a trip to an imaginative video game company, Lollygag Labs, to try out their new VR-like video game experience, immersion. Exploring the building in a first-person shooter style, going through immersion pods, picking up boxes, finding key cards, killing enemies, and meeting FRED
MORE ENEMIES (2023)
Starting at a dead-end job for an obscure paper company with no story relevance, you venture onto your next job as an employee at… Lollygag Labs. A game development company with questionable ethics! Where you uncover a plot of spoilers, deviance, gore, dangerous chairs, and of course: Enemies
ANIMATION REEL
Code Samples
Slowing down sounds in a scene when player goes in slo-mo mode:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SloMoManager : MonoBehaviour
{
AudioSource[] sounds;
public AudioSource[] ExcludedSounds;
bool changedYetSlow = false;
bool changedYet = false;
public Animator bulletTimeAnim;
private void Awake()
{
sounds = FindObjectsOfType<AudioSource>();
}
bool beenSlowedYet = false;
//Whenever timescale is changed between fast/slow this is called
public void RequestSoundChange(bool slow)
{
if (slow)
{
beenSlowedYet = true;
changedYet = false;
if (changedYetSlow == false)
{
ChangeAllPitchValues(-0.7f);
changedYetSlow = true;
bulletTimeAnim.Play("BulletTStart");
}
}
if (slow == false && beenSlowedYet)
{
changedYetSlow = false;
if (changedYet == false)
{
ChangeAllPitchValues(0.7f);
changedYet = true;
bulletTimeAnim.Play("BulletTEnd");
}
}
}
public void ChangeAllPitchValues(float pitchDifference)
{
// Loop through the whole sound array.
foreach (AudioSource s in sounds)
{
//Exclude sounds that aren't meant to be slowed down (background music, etc.)
if (ArrayContains(ExcludedSounds, s) == false)
{
// Adjust pitch value equal to the given difference.
s.pitch += pitchDifference;
}
}
}
bool ArrayContains(AudioSource[] array, AudioSource g)
{
for (int i = 0; i < array.Length; i++)
{
if (array[i] == g) return true;
}
return false;
}
}
Fading in/out audioSources as needed
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public static class AudioFadeOut {
public static IEnumerator FadeOut (AudioSource audioSource, float FadeTime, AudioZone setVolume, AudioSource aS = null) {
if(aS != null)
{
float startVolume = aS.volume;
while (aS.volume > 0)
{
aS.volume -= 1 * Time.deltaTime / FadeTime;
yield return null;
}
}
else
{
float startVolume = setVolume.setVolume;
while (setVolume.setVolume > 0)
{
setVolume.setVolume -= startVolume * Time.deltaTime / FadeTime;
yield return null;
}
}
audioSource.Stop ();
}
public static IEnumerator FadeIn(AudioSource audioSource, float FadeTime, float vol, AudioZone setVolume)
{
//audioSource.volume = 0;
if (audioSource.isPlaying == false)
audioSource.Play();
while (setVolume.setVolume < vol)
{
setVolume.setVolume += vol * Time.deltaTime / FadeTime;
yield return null;
}
}
public static IEnumerator FadeToVolume(AudioSource audioSource, float FadeTime, float volume, AudioZone setVolume)
{
if (setVolume == null)
{
float startVolume = audioSource.volume;
if (volume > startVolume)
{
if (audioSource != null)
while (audioSource.volume < volume)
{
audioSource.volume += startVolume * Time.deltaTime / FadeTime;
yield return null;
}
}
else
{
while (audioSource.volume > volume)
{
audioSource.volume -= startVolume * Time.deltaTime / FadeTime;
yield return null;
}
}
}
else
{
float startVolume = setVolume.setVolume;
while (setVolume.setVolume > volume)
{
setVolume.setVolume -= startVolume * Time.deltaTime / FadeTime;
yield return null;
}
}
}
}
Simple gun recoil
using UnityEngine;
using System.Collections;
public class Recoil : MonoBehaviour
{
private Vector3 currentRotation;
private Vector3 targetRotation;
//Hipfire. Recoil
public float recoilx;
public float recoilY;
public float recoilz;
//ADS Recoll
public float aimkecoilx;
public float aimkecoilzi;
//Settings
public float snappiness;
public float returnspeed;
void Update()
{
targetRotation = Vector3.Lerp(targetRotation, Vector3.zero, returnspeed * Time.deltaTime);
currentRotation = Vector3.Slerp(currentRotation, targetRotation, snappiness * Time.deltaTime);
transform.localRotation = Quaternion.Euler(currentRotation);
}
public void Recoilfire(float multi)
{
float otherMulti = multi;
if (multi > 2)
otherMulti = (multi * 0.4f);
targetRotation += new Vector3(recoilx * (multi), Random.Range(-recoilY, recoilY) * (otherMulti), Random.Range(-recoilz, recoilz) * (otherMulti));
}
}
Published @ October 3, 2023 2:51 pm