龙腾猫跃 4 ani în urmă
părinte
comite
f031135b3f

+ 12 - 0
Assets/Resources/Entities/Bullet.cs

@@ -0,0 +1,12 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Bullet : MonoBehaviour {
+
+    private void OnCollisionEnter2D(Collision2D collision) {
+        //TODO: ×Óµ¯±¬Õ¨ÒôЧ£¨Ïú»Ù£©
+        Destroy(gameObject);
+    }
+
+}

+ 11 - 0
Assets/Resources/Entities/Bullet.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4da3bc50a479fb74f89432d9e58aa1be
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Resources/Entities/Bullet.png


+ 134 - 0
Assets/Resources/Entities/Bullet.png.meta

@@ -0,0 +1,134 @@
+fileFormatVersion: 2
+guid: c18dd1aef6ed3fd439185e642d44c053
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMasterTextureLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 32
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Server
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: WebGL
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    nameFileIdTable: {}
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 148 - 0
Assets/Resources/Entities/Bullet.prefab

@@ -0,0 +1,148 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &3784861654496570301
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3784861654496570300}
+  - component: {fileID: 3784861654496570299}
+  - component: {fileID: 3784861654496570297}
+  - component: {fileID: 3784861654496570298}
+  - component: {fileID: 95278088495913127}
+  m_Layer: 12
+  m_Name: Bullet
+  m_TagString: Bullet
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3784861654496570300
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3784861654496570301}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -1.21, y: -2.8, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &3784861654496570299
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3784861654496570301}
+  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_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  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: 0
+  m_Sprite: {fileID: 21300000, guid: c18dd1aef6ed3fd439185e642d44c053, type: 3}
+  m_Color: {r: 0.952361, g: 1, b: 0, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 1, y: 1}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0
+--- !u!61 &3784861654496570297
+BoxCollider2D:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3784861654496570301}
+  m_Enabled: 1
+  m_Density: 1
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_UsedByEffector: 0
+  m_UsedByComposite: 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: 0.3125, y: 0.59375}
+    newSize: {x: 1, y: 1}
+    adaptiveTilingThreshold: 0.5
+    drawMode: 0
+    adaptiveTiling: 0
+  m_AutoTiling: 0
+  serializedVersion: 2
+  m_Size: {x: 0.4, y: 0.7}
+  m_EdgeRadius: 0
+--- !u!50 &3784861654496570298
+Rigidbody2D:
+  serializedVersion: 4
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3784861654496570301}
+  m_BodyType: 0
+  m_Simulated: 1
+  m_UseFullKinematicContacts: 0
+  m_UseAutoMass: 0
+  m_Mass: 0.2
+  m_LinearDrag: 0
+  m_AngularDrag: 0.05
+  m_GravityScale: 0
+  m_Material: {fileID: 0}
+  m_Interpolate: 0
+  m_SleepingMode: 1
+  m_CollisionDetection: 1
+  m_Constraints: 4
+--- !u!114 &95278088495913127
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3784861654496570301}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4da3bc50a479fb74f89432d9e58aa1be, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 

+ 7 - 0
Assets/Resources/Entities/Bullet.prefab.meta

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

+ 1 - 4
Assets/Resources/Entities/EnemyArrow.cs

@@ -2,7 +2,7 @@ using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
-public class EnemyArrow : EntityBase {
+public class EnemyArrow : EnemyBase {
 
     public bool movingLeft = false;
     internal override bool isPressingCrouch() => false;
@@ -10,9 +10,6 @@ public class EnemyArrow : EntityBase {
     internal override bool isPressingLeft() => movingLeft;
     internal override bool isPressingRight() => !movingLeft;
 
-    internal override void OnHitBorder() {
-        Destroy(gameObject);
-    }
     internal override void OnHitEnemy(Collision2D collision) {
         Destroy(gameObject);
     }

+ 24 - 0
Assets/Resources/Entities/EnemyBase.cs

@@ -0,0 +1,24 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using DG.Tweening;
+
+public abstract class EnemyBase : EntityBase {
+
+    internal override void OnHitBorder() {
+        Destroy(gameObject);
+    }
+
+    internal override void OnHitBullet() {
+        // 受伤动画
+        sprite.DOColor(new Color(1f, 0.5f, 0.5f), 0.04f).SetLoops(2, LoopType.Yoyo);
+        // 死亡判断
+        hp--;
+        if (hp < 0) {
+            //TODO: 敌人死亡音效
+            transform.localScale = Vector3.zero;
+            Destroy(gameObject, 1); // 防止动画没播放完导致报错
+        }
+    }
+
+}

+ 11 - 0
Assets/Resources/Entities/EnemyBase.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c0510e694e56b0f41bc79412c89c1e72
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 6 - 9
Assets/Resources/Entities/EnemyHeavy.cs

@@ -2,22 +2,19 @@ using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
-public class EnemyHeavy : EntityBase {
+public class EnemyHeavy : EnemyBase {
 
     public bool movingLeft = false;
     internal override bool isPressingCrouch() => false;
     internal override bool isPressDownJump() => false;
     internal override bool isPressingLeft() => movingLeft;
     internal override bool isPressingRight() => !movingLeft;
-    internal override void OnUpdate() {
-        bool shouldTurn = false;
-        if (Mathf.Abs(rb.velocity.x) > 0.001f && (rb.velocity.x > 0 == movingLeft)) shouldTurn = true;
-        if (shouldTurn) movingLeft = !movingLeft;
-    }
+    //internal override void OnUpdate() {
+    //    bool shouldTurn = false;
+    //    if (Mathf.Abs(rb.velocity.x) > 0.001f && (rb.velocity.x > 0 == movingLeft)) shouldTurn = true;
+    //    if (shouldTurn) movingLeft = !movingLeft;
+    //}
 
-    internal override void OnHitBorder() {
-        Destroy(gameObject);
-    }
     public float knockbackForceH = 30f, knockbackForceV = 15f;
     internal override void OnHitEnemy(Collision2D collision) {
         int face = collision.transform.position.x < transform.position.x ? 1 : -1;

+ 1 - 4
Assets/Resources/Entities/EnemyMover.cs

@@ -2,7 +2,7 @@ using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
-public class EnemyMover : EntityBase {
+public class EnemyMover : EnemyBase {
 
     public bool movingLeft = false;
     internal override bool isPressingCrouch() => false;
@@ -23,9 +23,6 @@ public class EnemyMover : EntityBase {
         }
     }
 
-    internal override void OnHitBorder() {
-        Destroy(gameObject);
-    }
     public float knockbackForceH = 30f, knockbackForceV = 15f;
     internal override void OnHitEnemy(Collision2D collision) {
         int face = collision.transform.position.x < transform.position.x ? 1 : -1;

+ 7 - 2
Assets/Resources/Entities/EntityBase.cs

@@ -10,13 +10,14 @@ public abstract class EntityBase : MonoBehaviour {
     internal BoxCollider2D coll;
     public Sprite spriteNormal, spriteDown;
     void Start() {
+        currentHp = hp;
         rb = GetComponent<Rigidbody2D>();
         sprite = GetComponent<SpriteRenderer>();
         coll = GetComponent<BoxCollider2D>();
     }
 
     public bool canCrouch = false;
-    public float movementSpeed = 10f, jumpForce = 20f, horizontalF = 0.9f, horizontalA = 0.3f, jumpThreshold = 0.1f, downA = 0.3f, fallA = 0.1f;
+    public float movementSpeed = 10f, jumpForce = 20f, horizontalF = 0.9f, horizontalA = 0.3f, jumpThreshold = 0.1f, downA = 0.3f, fallA = 0.1f, filpSpeed = 0.3f;
     public float jumpBufferTime = 0.2f, jumpWolfTime = 0.2f; internal float jumpBuffer = 0f, jumpWolf = 0f, jumping = 0f;
     private bool towardsRight = true;
     void Update() {
@@ -64,7 +65,7 @@ public abstract class EntityBase : MonoBehaviour {
         }
         // ÉèÖÃ
         rb.velocity = new Vector2(speedX, speedY);
-        if (towardsRight != (Mathf.Abs(speedX) > 0.01 ? speedX > 0 : towardsRight)) {
+        if (towardsRight != (Mathf.Abs(speedX) > filpSpeed ? speedX > 0 : towardsRight)) {
             // ·´Ïò
             towardsRight = !towardsRight;
             transform.DOScaleX(towardsRight ? 1 : -1, 0.1f);
@@ -76,13 +77,17 @@ public abstract class EntityBase : MonoBehaviour {
     internal abstract bool isPressingCrouch();
     internal virtual void OnUpdate() {}
 
+    public int hp; internal int currentHp;
+
     // Åöײ¼ì²â
     private void OnCollisionEnter2D(Collision2D collision) {
         if (collision.gameObject.CompareTag("Border")) OnHitBorder();
+        if (collision.gameObject.CompareTag("Bullet")) OnHitBullet();
         if (collision.gameObject.CompareTag("Enemy") && gameObject.CompareTag("Player")) OnHitEnemy(collision);
         if (collision.gameObject.CompareTag("Player") && gameObject.CompareTag("Enemy")) OnHitEnemy(collision);
     }
     internal abstract void OnHitBorder();
+    internal virtual void OnHitBullet() {}
     internal abstract void OnHitEnemy(Collision2D collision);
 
 }

+ 28 - 1
Assets/Resources/Entities/Player.cs

@@ -30,8 +30,35 @@ public class Player : EntityBase {
     }
 
     // 射击
+    public int maxBullet = 20, currentBullet = 20;
+    public float shootDelay = 0.15f; private float currentShootDelay = 0f;
+    public float reloadDelay = 1.5f; private float currentReloadDelay = 0f;
+    public float bulletSpeed = 50f, bulletKnockback = 1f;
+    public GameObject bullet;
     internal override void OnUpdate() {
-
+        // 装填
+        if (InputM.GetKeyEvent(InputM.KeyType.Reload) && currentBullet < maxBullet && currentReloadDelay <= 0f) {
+            // TODO: 装填音效(总时长为 reloadDelay,看 Unity 里的 Player 右边栏,这里的数字可能是过期的)
+            currentReloadDelay = reloadDelay;
+        } else if (currentReloadDelay > 0 && currentReloadDelay < Time.deltaTime) {
+            currentReloadDelay = 0f; currentBullet = maxBullet;
+        } else if (currentReloadDelay > 0) {
+            currentReloadDelay -= Time.deltaTime;
+        }
+        // 开火
+        if (InputM.GetKeyEvent(InputM.KeyType.Fire) && currentBullet > 0 && currentShootDelay <= 0f) {
+            // TODO: 开火音效
+            currentBullet--; currentShootDelay = shootDelay;
+            Vector2 fromPos = transform.position + Vector3.up * 0.55f;
+            Vector2 toPos = Camera.allCameras[0].ScreenToWorldPoint(Input.mousePosition);
+            Vector2 shootVector = (toPos - fromPos).normalized;
+            GameObject newBullet = Instantiate(bullet, fromPos, Quaternion.FromToRotation(fromPos, toPos));
+            newBullet.GetComponent<Rigidbody2D>().velocity = bulletSpeed * shootVector;
+            // 后座力
+            rb.velocity += bulletKnockback * -shootVector;
+        } else if (currentShootDelay > 0) {
+            currentShootDelay -= Time.deltaTime;
+        }
     }
 
 }

+ 20 - 5
Assets/Scenes/SceneMain.unity

@@ -859,11 +859,20 @@ MonoBehaviour:
   horizontalA: 0.07
   jumpThreshold: 0.05
   downA: 0.5
-  fallA: 0.4
+  fallA: 0.6
+  filpSpeed: 0.6
   jumpBufferTime: 0.15
   jumpWolfTime: 0.2
+  hp: 3
   knockbackForceH: 40
   knockbackForceV: 10
+  maxBullet: 30
+  currentBullet: 30
+  shootDelay: 0.1
+  reloadDelay: 1.5
+  bulletSpeed: 50
+  bulletKnockback: 2.5
+  bullet: {fileID: 3784861654496570301, guid: 5485a04fa6dca0746989d90942cc6acb, type: 3}
 --- !u!50 &557375728
 Rigidbody2D:
   serializedVersion: 4
@@ -3135,7 +3144,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0}
   m_AnchorMax: {x: 0.5, y: 0}
-  m_AnchoredPosition: {x: 0, y: 70}
+  m_AnchoredPosition: {x: 0, y: 80}
   m_SizeDelta: {x: 50, y: 0}
   m_Pivot: {x: 0.5, y: 0}
 --- !u!222 &941795214
@@ -3202,9 +3211,11 @@ MonoBehaviour:
   horizontalA: 0.07
   jumpThreshold: 0.1
   downA: 0.4
-  fallA: 0.4
+  fallA: 0.6
+  filpSpeed: 0.3
   jumpBufferTime: 0.15
   jumpWolfTime: 0.2
+  hp: 15
   movingLeft: 0
   knockbackForceH: 30
   knockbackForceV: 8
@@ -3538,9 +3549,11 @@ MonoBehaviour:
   horizontalA: 0.3
   jumpThreshold: 0.1
   downA: 0.3
-  fallA: 0.1
+  fallA: 0.6
+  filpSpeed: 0.3
   jumpBufferTime: 0.2
   jumpWolfTime: 0.2
+  hp: 2
   movingLeft: 0
 --- !u!1 &1142715111
 GameObject:
@@ -8617,9 +8630,11 @@ MonoBehaviour:
   horizontalA: 0.07
   jumpThreshold: 0.05
   downA: 0.4
-  fallA: 0.4
+  fallA: 0.6
+  filpSpeed: 0.3
   jumpBufferTime: 0.15
   jumpWolfTime: 0.2
+  hp: 6
   movingLeft: 0
   knockbackForceH: 40
   knockbackForceV: 10

+ 1 - 1
ProjectSettings/Physics2DSettings.asset

@@ -53,4 +53,4 @@ Physics2DSettings:
   m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
   m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
   m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
-  m_LayerCollisionMatrix: bbffffffbbf7ffff88f7fffffff7ffffbbf7ffffbbf7ffffc8f7fffffff7fffffff7fffffff3fffffff5ffff01f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+  m_LayerCollisionMatrix: bbffffffbbf7ffff88f7fffffff7ffffbbf7ffffbbf7ffffc8f7ffffffe7fffffff7fffffff3fffffff5ffff01e0ffff7fe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

+ 1 - 1
ProjectSettings/TagManager.asset

@@ -22,7 +22,7 @@ TagManager:
   - Border
   - Dice
   - Marker
-  - 
+  - Bullet
   - 
   - 
   -