2 Commits
awman ... main

Author SHA1 Message Date
ProtoSharkk
26f8a323d3 Merge pull request #11 from ProtoSharkk/dash
Dashing into enemies creates a shockwave that pushes them away
2024-10-28 17:47:09 -07:00
7b15dbb593 Dashing into enemies creates a shockwave that pushes them away
You don't take damage from this
2024-10-27 21:27:38 -07:00
14 changed files with 24 additions and 5458 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: ffe7e66eebc0e53d993926c0304591da
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,181 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7192111562784377269
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7306069853192956541}
- component: {fileID: 6956675740950355391}
- component: {fileID: 3724765237708177526}
- component: {fileID: 8790759452092966400}
- component: {fileID: 6076434776385846704}
m_Layer: 0
m_Name: FastFucker
m_TagString: Ratbot
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7306069853192956541
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7192111562784377269}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.45, y: 0.45, z: 0.45}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &6956675740950355391
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7192111562784377269}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 1
m_Sprite: {fileID: -3751497128136096670, guid: 520c934c186517356929c5948597af6f, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 5.12, y: 5.12}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!114 &3724765237708177526
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7192111562784377269}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 07603fdf7ab38f05493e2a22ef5cae06, type: 3}
m_Name:
m_EditorClassIdentifier:
moveSpeed: 1500
damageStrength: 10
damageTimeoutSeconds: 0.5
health: 10
--- !u!61 &8790759452092966400
BoxCollider2D:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7192111562784377269}
m_Enabled: 1
serializedVersion: 3
m_Density: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_ForceSendLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ForceReceiveLayers:
serializedVersion: 2
m_Bits: 4294967295
m_ContactCaptureLayers:
serializedVersion: 2
m_Bits: 4294967295
m_CallbackLayers:
serializedVersion: 2
m_Bits: 4294967295
m_IsTrigger: 0
m_UsedByEffector: 0
m_CompositeOperation: 0
m_CompositeOrder: 0
m_Offset: {x: 0, y: 0}
m_SpriteTilingProperty:
border: {x: 0, y: 0, z: 0, w: 0}
pivot: {x: 0.5, y: 0.5}
oldSize: {x: 3.53, y: 4.2}
newSize: {x: 5.12, y: 5.12}
adaptiveTilingThreshold: 0.5
drawMode: 0
adaptiveTiling: 0
m_AutoTiling: 0
m_Size: {x: 3.53, y: 4.2}
m_EdgeRadius: 0
--- !u!50 &6076434776385846704
Rigidbody2D:
serializedVersion: 5
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7192111562784377269}
m_BodyType: 0
m_Simulated: 1
m_UseFullKinematicContacts: 0
m_UseAutoMass: 0
m_Mass: 0.2
m_LinearDamping: 15
m_AngularDamping: 0.05
m_GravityScale: 1
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_Interpolate: 0
m_SleepingMode: 1
m_CollisionDetection: 0
m_Constraints: 4

View File

@@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 2c67a9ffe3cbdc6989fcabe398ffd2dc
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -681,11 +681,8 @@ MonoBehaviour:
m_EditorClassIdentifier:
state: 0
wave: 0
ratbot: {fileID: 398740452138961375, guid: b1e1e6378fb12d47e989565896a737ef, type: 3}
shop: {fileID: 6569104281457075541, guid: c0d23b24c9c882ef89013998dab29dea, type: 3}
ratbot: {fileID: 398740452138961375, guid: 5887eeeb7c78eb5c7bf46c5893fd4846, type: 3}
gunThrower: {fileID: 398740452138961375, guid: b1e1e6378fb12d47e989565896a737ef, type: 3}
fastFucker: {fileID: 7192111562784377269, guid: 2c67a9ffe3cbdc6989fcabe398ffd2dc, type: 3}
creeper: {fileID: 398740452138961375, guid: ffe7e66eebc0e53d993926c0304591da, type: 3}
--- !u!4 &745837569
Transform:
m_ObjectHideFlags: 0

View File

@@ -7,15 +7,11 @@ public class GameState : MonoBehaviour
public GameObject shop;
public GameObject ratbot;
public GameObject gunThrower;
public GameObject fastFucker;
public GameObject creeper;
int[] counts = new int[4];
int[] counts = new int[2];
enum CountIndex : uint {
ratbot = 0,
gunThrower = 1,
fastFucker = 2,
creeper = 3
gunThrower = 1
}
void Start() {
@@ -56,7 +52,6 @@ public class GameState : MonoBehaviour
for (uint _ = 0; _ <= wave; _++) {
GameObject newRatbot = Instantiate(
SpawnRatbot(),
// Spawn ratbots in a circle around the player
Random.insideUnitCircle.normalized*20
+ new Vector2 (
playerPosition.x,
@@ -64,8 +59,6 @@ public class GameState : MonoBehaviour
),
Quaternion.identity
);
// Set ratbot damageStrength and health
// TODO: set speed
newRatbot.GetComponent<Ratbot>().damageStrength
= 5+wave*5;
newRatbot.GetComponent<Ratbot>().health = 5+wave*2;
@@ -73,26 +66,12 @@ public class GameState : MonoBehaviour
wave++;
}
public GameObject SpawnRatbot() {
return creeper;
// TODO: Convert this mess into a switch case
if (counts[(uint)CountIndex.gunThrower] < wave/3
&& wave > 2
&& wave > 3
) {
counts[(uint)CountIndex.gunThrower]++;
return gunThrower;
}
if (counts[(uint)CountIndex.fastFucker] < wave/4
&& wave > 3
) {
counts[(uint)CountIndex.fastFucker]++;
return fastFucker;
}
if (counts[(uint)CountIndex.creeper] < wave/6
&& wave > 4
) {
counts[(uint)CountIndex.creeper]++;
return creeper;
}
return ratbot;
}
}

View File

@@ -1,26 +0,0 @@
using UnityEngine;
public class Creeper : Ratbot
{
public GameObject particles;
float countdown;
void Update() {
if (Vector3.Distance(player.transform.position, transform.position) > 5) {
MoveTowardsPlayer(moveSpeed);
float newTime = countdown + Time.deltaTime;
countdown = Mathf.Min(newTime, 1);
} else {
countdown -= Time.deltaTime;
if (countdown < 0) Explode();
}
transform.GetChild(0).localScale = new Vector3 (countdown * 3.5F, 0.25F, 1);
}
void Explode() {
Destroy(gameObject);
Instantiate(particles);
if (Vector3.Distance(player.transform.position, transform.position) < 5) {
player.GetComponent<Teo>().health -= damageStrength;
}
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: d23c0105448702c45b209f27f497780f

View File

@@ -1,30 +0,0 @@
using UnityEngine;
using System.Collections;
public class FastFucker : Ratbot
{
bool attack = true;
void Update() {
if (attack)
MoveTowardsPlayer(moveSpeed*3);
else
MoveAwayFromPlayer(moveSpeed);
}
void MoveAwayFromPlayer(float speed) {
controller.AddRelativeForce(
(transform.position - player.transform.position)
.normalized
*speed
*Time.deltaTime
);
}
new void OnCollisionStay2D (Collision2D collision) {
base.OnCollisionStay2D(collision);
StartCoroutine("RunAway");
}
IEnumerator RunAway() {
attack = false;
yield return new WaitForSeconds (1F);
attack = true;
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 07603fdf7ab38f05493e2a22ef5cae06

View File

@@ -10,33 +10,28 @@ public class Ratbot : MonoBehaviour
public static GameState gameState;
public static GameObject player;
public Rigidbody2D controller;
void Start() {
SetVars();
}
public void SetVars() {
controller = GetComponent<Rigidbody2D>();
// Set gameState and player objects
player = GameObject.FindGameObjectWithTag("Player");
gameState = GameObject.FindGameObjectWithTag("GameController").GetComponent<GameState>();
}
void Update() {
MoveTowardsPlayer(moveSpeed);
MoveTowardsPlayer();
}
public void MoveTowardsPlayer(float speed) {
controller.AddRelativeForce(
(player.transform.position - transform.position)
.normalized
*speed
*Time.deltaTime
);
public void MoveTowardsPlayer() {
Rigidbody2D controller = GetComponent<Rigidbody2D>();
Vector2 direction = (player.transform.position - transform.position).normalized;
controller.AddRelativeForce(direction*moveSpeed*Time.deltaTime);
}
public virtual void OnCollisionStay2D(Collision2D collision) {
void OnCollisionStay2D(Collision2D collision) {
// Deal damage when colliding with the player on a 0.5 second cooldown
if (collision.gameObject.tag != "Player") return;
if (lastDamageTime > Time.fixedTime-damageTimeoutSeconds) return;

View File

@@ -94,9 +94,21 @@ public class Teo : MonoBehaviour
).normalized * dashDistance);
// Wait 0.2 seconds before ending the dash
yield return new WaitForSeconds(0.2F);
// Re enable collision and linearDamping after dash complete
// Re enable collision and linearDamping after dash
dashing = false;
collider.enabled = true;
controller.linearDamping = 15;
// Push enemies away at end of dash
foreach (Collider2D hit in Physics2D.OverlapCircleAll(
transform.position, 3
)) {
if (hit.tag != "Ratbot") continue;
hit.GetComponent<Rigidbody2D>().AddRelativeForce(
(hit.transform.position - transform.position)
.normalized * dashDistance
);
}
// Don't take damage at end of dash
yield return new WaitForSeconds(0.2F);
collider.enabled = true;
}
}