Преглед на файлове

Merge branch 'master' of https://github.com/Hex-Dragon/GMTK2022

= преди 4 години
родител
ревизия
3255575450

+ 20 - 0
Assets/Resources/Entities/EnemyArrow.cs

@@ -0,0 +1,20 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class EnemyArrow : EntityBase {
+
+    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 OnHitBorder() {
+        Destroy(gameObject);
+    }
+    internal override void OnHitEnemy(Collision2D collision) {
+        Destroy(gameObject);
+    }
+
+}

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

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

BIN
Assets/Resources/Entities/EnemyArrow.png


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

@@ -0,0 +1,134 @@
+fileFormatVersion: 2
+guid: ba0316890c5b9ad459c082afd99f8431
+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: 

+ 10 - 4
Assets/Resources/Entities/EnemyController.cs → Assets/Resources/Entities/EnemyHeavy.cs

@@ -2,12 +2,18 @@ using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
-public class EnemyController : EntityBase {
-    
+public class EnemyHeavy : EntityBase {
+
+    public bool movingLeft = false;
     internal override bool isPressingCrouch() => false;
     internal override bool isPressDownJump() => false;
-    internal override bool isPressingLeft() => false;
-    internal override bool isPressingRight() => true;
+    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 OnHitBorder() {
         Destroy(gameObject);

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

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

BIN
Assets/Resources/Entities/EnemyHeavy.png


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

@@ -0,0 +1,134 @@
+fileFormatVersion: 2
+guid: 19c156188586cd949b5aa6bcd9d8b6e0
+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: 7
+  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: 

+ 35 - 0
Assets/Resources/Entities/EnemyMover.cs

@@ -0,0 +1,35 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class EnemyMover : EntityBase {
+
+    public bool movingLeft = false;
+    internal override bool isPressingCrouch() => false;
+    internal override bool isPressDownJump() => false;
+    internal override bool isPressingLeft() => movingLeft;
+    internal override bool isPressingRight() => !movingLeft;
+
+    private float turnCooldown = 0f;
+    internal override void OnUpdate() {
+        bool shouldTurn =
+            (movingLeft && Physics2D.Linecast(transform.position, transform.position + Vector3.left * 0.5f, LayerMask.GetMask("Marker"))) ||
+            (!movingLeft && Physics2D.Linecast(transform.position, transform.position + Vector3.right * 0.5f, LayerMask.GetMask("Marker")));
+        if (Mathf.Abs(rb.velocity.x) > 0.0001f && (rb.velocity.x > 0 == movingLeft)) shouldTurn = true;
+        turnCooldown -= Time.deltaTime;
+        if (shouldTurn && turnCooldown <= 0f) {
+            movingLeft = !movingLeft;
+            turnCooldown = 0.5f;
+        }
+    }
+
+    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;
+        rb.velocity = new Vector2(face * knockbackForceH, knockbackForceV);
+    }
+
+}

+ 0 - 0
Assets/Resources/Entities/EnemyController.cs.meta → Assets/Resources/Entities/EnemyMover.cs.meta


+ 0 - 0
Assets/Resources/Entities/Lamp.png → Assets/Resources/Entities/EnemyMover.png


+ 0 - 0
Assets/Resources/Entities/Lamp.png.meta → Assets/Resources/Entities/EnemyMover.png.meta


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

@@ -20,10 +20,12 @@ public abstract class EntityBase : MonoBehaviour {
     public float jumpBufferTime = 0.2f, jumpWolfTime = 0.2f; internal float jumpBuffer = 0f, jumpWolf = 0f, jumping = 0f;
     private bool towardsRight = true;
     void Update() {
+        OnUpdate();
         // 获取当前情况
         float speedX = rb.velocity.x, speedY = rb.velocity.y;
         bool isCrouch = isPressingCrouch();
-        bool isLand = Physics2D.OverlapCircle(transform.position, jumpThreshold, LayerMask.GetMask("Tilemap"));
+        bool isLand = Physics2D.OverlapCircle(transform.position + Vector3.left * 0.1f, jumpThreshold, LayerMask.GetMask("Tilemap")) || 
+            Physics2D.OverlapCircle(transform.position + Vector3.left * -0.1f, jumpThreshold, LayerMask.GetMask("Tilemap"));
         float moveHorizontal = (isCrouch && isLand ? 0.35f : 1) * // 下蹲减速
             (isPressingLeft() == isPressingRight() ? 0 : // 没有同时按住左右
             (isPressingLeft() ? -1 : 1)); // 获取方向
@@ -40,7 +42,6 @@ public abstract class EntityBase : MonoBehaviour {
             jumping = 0.5f;
         } else if (isCrouch) {
             speedY -= downA;
-            if (speedY > 0) speedY = 0;
         }
         // 加速下落
         if (speedY < 0) speedY -= fallA;
@@ -73,6 +74,7 @@ public abstract class EntityBase : MonoBehaviour {
     internal abstract bool isPressingRight();
     internal abstract bool isPressDownJump();
     internal abstract bool isPressingCrouch();
+    internal virtual void OnUpdate() {}
 
     // 碰撞检测
     private void OnCollisionEnter2D(Collision2D collision) {

+ 2 - 2
Assets/Resources/Entities/PlayerController.cs → Assets/Resources/Entities/Player.cs

@@ -5,7 +5,7 @@ using System.Collections.Generic;
 using System.Linq;
 using UnityEngine;
 
-public class PlayerController : EntityBase {
+public class Player : EntityBase {
 
     internal override bool isPressingCrouch() => InputM.GetKeyEvent(InputM.KeyType.Crouch);
     internal override bool isPressDownJump() => InputM.GetKeyEvent(InputM.KeyType.Jump);
@@ -32,7 +32,7 @@ public class PlayerController : EntityBase {
 
     // 测试方法:按 Ctrl+R 生成骰子
     public GameObject dice;
-    private void LateUpdate() {
+    internal override void OnUpdate() {
         if (!Input.GetKey(KeyCode.LeftControl) || !Input.GetKeyUp(KeyCode.R)) return;
         // 生成测试骰子
         InputM.DropDice(Module.RandomOne(InputM.keyTypes.ToList()));

+ 0 - 0
Assets/Resources/Entities/PlayerController.cs.meta → Assets/Resources/Entities/Player.cs.meta


+ 2 - 2
Assets/Resources/Map/Fail.asset → Assets/Resources/Map/Marker.asset

@@ -10,9 +10,9 @@ MonoBehaviour:
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_Script: {fileID: 13312, guid: 0000000000000000e000000000000000, type: 0}
-  m_Name: Fail
+  m_Name: Marker
   m_EditorClassIdentifier: 
-  m_Sprite: {fileID: 21300000, guid: 4284a451a72d9ae4ca1e726d6e2a0295, type: 3}
+  m_Sprite: {fileID: 0}
   m_Color: {r: 1, g: 0.24905658, b: 0.24905658, a: 1}
   m_Transform:
     e00: 1

+ 0 - 0
Assets/Resources/Map/Fail.asset.meta → Assets/Resources/Map/Marker.asset.meta


Файловите разлики са ограничени, защото са твърде много
+ 589 - 297
Assets/Scenes/SceneMain.unity


+ 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: bbffffffbbffffff88ffffffffffffffbbffffffbbffffffc8fffffffffffffffffffffffffbfffffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+  m_LayerCollisionMatrix: bbffffffbbf7ffff88f7fffffff7ffffbbf7ffffbbf7ffffc8f7fffffff7fffffff7fffffff3fffffff5ffff01f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

+ 2 - 1
ProjectSettings/TagManager.asset

@@ -8,6 +8,7 @@ TagManager:
   - Enemy
   - Bullet
   - Dice
+  - Marker
   layers:
   - Default
   - TransparentFX
@@ -20,7 +21,7 @@ TagManager:
   - Enemy
   - Border
   - Dice
-  - 
+  - Marker
   - 
   - 
   - 

Някои файлове не бяха показани, защото твърде много файлове са промени