Skip to content

Instantly share code, notes, and snippets.

View samsheffield's full-sized avatar
🏠
Homing from work

Sam Sheffield samsheffield

🏠
Homing from work
View GitHub Profile
@samsheffield
samsheffield / InkInteraction.cs
Created December 5, 2023 23:09
Ink + Unity demo files (Narrative Design F23)
using System;
using System.Collections;
using UnityEngine;
public class InkInteraction : MonoBehaviour
{
// This is the ink JSON asset
[SerializeField] private TextAsset inkJSON;
// This is a reference to the Ink Manager script designed to run the story
@samsheffield
samsheffield / DeActivatingGameObjects.txt
Created October 3, 2021 20:53
(De)Activating GameObjects
Here is a bonus Unity example for 2D Game Design F21. Let me know what else you need!
======================================================================================
(DE) ACTIVATING GAMEOBJECTS
Activate another GameObject on Start example: ShowOnStart.cs
Deactivate this GameObject on action (press space) example: HideOnAction.cs
Example Unity Project: https://drive.google.com/file/d/1qhtZZOpn83fH7DKXjtUJ8WmbGrK62By2/view?usp=sharing
Important:
1. ShowOnStart requires the GameObject you want to activate deactivated in your scene (uncheck the top-left box in its Inspector)
@samsheffield
samsheffield / SwitchScene.cs
Created September 28, 2021 08:36
Load a scene with a keypress
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement; // Add Scene Management
public class SwitchScene : MonoBehaviour
{
// Important: Don't forget to add the next scene to your project's Build Settings
@samsheffield
samsheffield / JustOnce.cs
Created September 27, 2021 00:40
How to do something just once in Update
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JustOnce : MonoBehaviour
{
// Has the thing already been done?
private bool alreadyDone = false;
@samsheffield
samsheffield / KeyControl.cs
Created September 25, 2021 21:56
Using specific keys instead of Axis Input
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class KeyControl : MonoBehaviour
{
// Variables for keycodes that can be set in the Inspector
public KeyCode up = KeyCode.W;
public KeyCode down = KeyCode.S;
public KeyCode left = KeyCode.A;
@samsheffield
samsheffield / Spin.cs
Created September 25, 2021 21:03
Spinning GameObject
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Spin : MonoBehaviour
{
// Set the velocity of rotation (positive numbers go counterclockwise, negative numbers go clockwise)
public float spinVelocity = 10f;
private Rigidbody2D rb2d;
@samsheffield
samsheffield / FlapControl.txt
Last active September 25, 2021 21:04
Flapping movement
Here is a bonus Unity example for 2D Game Design F21. Let me know what else you need!
======================================================================================
A BASIC APPROACH TO FLAPPING
Full example: FlappyControl.cs
Important:
1. Flapping isn't exactly jumping. Our expectations of jumping in videogames tend to be much higher. This is dumb, bouncy, and messy (but fun!)
2. Your GameObject needs a Rigidbody2D component with Gravity Scale set to something other than 0.
3. The script interact's a lot with the Rigidbody2D properties Gravity Scale and Linear Drag. Experiment!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DestroyingThings : MonoBehaviour
{
// This example assumes you will use collision to destroy something. You can use the code inside of OnTriggerEnter2D as well
private void OnCollisionEnter2D(Collision2D collision)
{
// If the other thing has a specific tag. It's a good idea to limit the detection to specific things
@samsheffield
samsheffield / TriggerScene.cs
Last active September 15, 2021 16:13
2D Game Design F21 Bonus Materials
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// Add SceneManagement to switch scenes
using UnityEngine.SceneManagement;
public class TriggerScene : MonoBehaviour
{
// Create a string variable that you can set in the Inspector to specify the name of your new scene. You don't need quotes there.
// Code based on CameraFacingBillboard by Nei Carter: http://wiki.unity3d.com/index.php?title=CameraFacingBillboard
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Billboard : MonoBehaviour
{
public Transform cameraTransform;