diff --git a/Assets/Prefabs/以撒鬼魂.prefab b/Assets/Prefabs/以撒鬼魂.prefab
index 707684d..cc154d6 100644
--- a/Assets/Prefabs/以撒鬼魂.prefab
+++ b/Assets/Prefabs/以撒鬼魂.prefab
@@ -12,6 +12,7 @@ GameObject:
- component: {fileID: 7242342954004886429}
- component: {fileID: 7242342954004886427}
- component: {fileID: 7242342954004886424}
+ - component: {fileID: 6762530813879066500}
m_Layer: 0
m_Name: "\u4EE5\u6492\u9B3C\u9B42"
m_TagString: Untagged
@@ -91,7 +92,7 @@ CapsuleCollider2D:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7242342954004886428}
- m_Enabled: 1
+ m_Enabled: 0
m_Density: 1
m_Material: {fileID: 0}
m_IsTrigger: 1
@@ -114,3 +115,24 @@ MonoBehaviour:
m_EditorClassIdentifier:
rushTime: 0.6
lightning: {fileID: 0}
+--- !u!50 &6762530813879066500
+Rigidbody2D:
+ serializedVersion: 4
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7242342954004886428}
+ m_BodyType: 0
+ m_Simulated: 1
+ m_UseFullKinematicContacts: 0
+ m_UseAutoMass: 0
+ m_Mass: 1
+ m_LinearDrag: 0
+ m_AngularDrag: 0.05
+ m_GravityScale: 1
+ m_Material: {fileID: 0}
+ m_Interpolate: 0
+ m_SleepingMode: 1
+ m_CollisionDetection: 0
+ m_Constraints: 7
diff --git a/Assets/Scenes/YiSaStageTest.unity b/Assets/Scenes/YiSaStageTest.unity
index 5dba08b..5b907d3 100644
--- a/Assets/Scenes/YiSaStageTest.unity
+++ b/Assets/Scenes/YiSaStageTest.unity
@@ -1099,12 +1099,12 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1355032012}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -2.8158715, y: 0.4, z: 0}
m_LocalScale: {x: 2.84, y: 23.24, z: 1}
m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 16
+ m_Father: {fileID: 1562252750}
+ m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!61 &1355032015
BoxCollider2D:
@@ -1754,6 +1754,37 @@ PolygonCollider2D:
- {x: -5.707261, y: 3.5044587}
- {x: 5.7573247, y: 3.5044587}
- {x: 5.7573247, y: 7.86}
+--- !u!1 &1562252749
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1562252750}
+ m_Layer: 0
+ m_Name: "\u843D\u96F7"
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1562252750
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1562252749}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 1355032014}
+ m_Father: {fileID: 0}
+ m_RootOrder: 16
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1740401870
GameObject:
m_ObjectHideFlags: 0
@@ -1894,7 +1925,7 @@ GameObject:
- component: {fileID: 1776031628}
- component: {fileID: 1776031627}
- component: {fileID: 1776031626}
- m_Layer: 0
+ m_Layer: 3
m_Name: "\u73A9\u5BB6"
m_TagString: Untagged
m_Icon: {fileID: 0}
@@ -2188,7 +2219,9 @@ GameObject:
- component: {fileID: 1784345427}
- component: {fileID: 1784345426}
- component: {fileID: 1784345428}
- m_Layer: 0
+ - component: {fileID: 1784345429}
+ - component: {fileID: 1784345430}
+ m_Layer: 11
m_Name: "\u4EE5\u6492\u96D5\u50CF"
m_TagString: Untagged
m_Icon: {fileID: 0}
@@ -2279,9 +2312,57 @@ MonoBehaviour:
canBeHit: 1
state: 0
HPLeft: 0
- timeBetweenAttacks: 1
goust: {fileID: 7242342954004886428, guid: b115139c858522e4284c9609bb70fd44, type: 3}
atkOffsetDistance: 2
+ crazyGoustTimeBetweenAttacks: 0.2
+ normalGoustTimeBetweenAttacks: 3
+--- !u!61 &1784345429
+BoxCollider2D:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1784345425}
+ 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: 2.2533333, y: 3.5733333}
+ newSize: {x: 3.38, y: 5.36}
+ adaptiveTilingThreshold: 0.5
+ drawMode: 0
+ adaptiveTiling: 0
+ m_AutoTiling: 0
+ serializedVersion: 2
+ m_Size: {x: 1.56, y: 3.5733333}
+ m_EdgeRadius: 0
+--- !u!50 &1784345430
+Rigidbody2D:
+ serializedVersion: 4
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1784345425}
+ m_BodyType: 0
+ m_Simulated: 1
+ m_UseFullKinematicContacts: 0
+ m_UseAutoMass: 0
+ m_Mass: 1
+ m_LinearDrag: 0
+ m_AngularDrag: 0.05
+ m_GravityScale: 1
+ m_Material: {fileID: 0}
+ m_Interpolate: 0
+ m_SleepingMode: 1
+ m_CollisionDetection: 0
+ m_Constraints: 7
--- !u!1 &1813717210 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 7242342954004886428, guid: b115139c858522e4284c9609bb70fd44, type: 3}
@@ -2369,9 +2450,9 @@ MonoBehaviour:
autoGenerate: 1
isActive: 1
isValid: 1
- target: {fileID: 1813717212}
+ target: {fileID: 1813717216}
animationType: 1
- targetType: 11
+ targetType: 9
forcedTargetType: 0
autoPlay: 1
useTargetAsV3: 0
@@ -2394,9 +2475,9 @@ MonoBehaviour:
optionalRotationMode: 0
optionalScrambleMode: 0
optionalString:
---- !u!4 &1813717212 stripped
-Transform:
- m_CorrespondingSourceObject: {fileID: 7242342954004886426, guid: b115139c858522e4284c9609bb70fd44, type: 3}
+--- !u!50 &1813717216 stripped
+Rigidbody2D:
+ m_CorrespondingSourceObject: {fileID: 6762530813879066500, guid: b115139c858522e4284c9609bb70fd44, type: 3}
m_PrefabInstance: {fileID: 7242342955549758278}
m_PrefabAsset: {fileID: 0}
--- !u!1 &1873098828
@@ -2835,6 +2916,10 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 7242342954004886427, guid: b115139c858522e4284c9609bb70fd44, type: 3}
+ propertyPath: m_Enabled
+ value: 1
+ objectReference: {fileID: 0}
- target: {fileID: 7242342954004886428, guid: b115139c858522e4284c9609bb70fd44, type: 3}
propertyPath: m_Name
value: "\u4EE5\u6492\u9B3C\u9B42"
@@ -2847,5 +2932,17 @@ PrefabInstance:
propertyPath: m_Color.a
value: 1
objectReference: {fileID: 0}
+ - target: {fileID: 7242342954004886429, guid: b115139c858522e4284c9609bb70fd44, type: 3}
+ propertyPath: m_Color.b
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7242342954004886429, guid: b115139c858522e4284c9609bb70fd44, type: 3}
+ propertyPath: m_Color.g
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7242342954004886429, guid: b115139c858522e4284c9609bb70fd44, type: 3}
+ propertyPath: m_Color.r
+ value: 1
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: b115139c858522e4284c9609bb70fd44, type: 3}
diff --git a/Assets/Scripts/Boss/以撒/YiSa.cs b/Assets/Scripts/Boss/以撒/YiSa.cs
index 062e25a..1c4dc83 100644
--- a/Assets/Scripts/Boss/以撒/YiSa.cs
+++ b/Assets/Scripts/Boss/以撒/YiSa.cs
@@ -16,11 +16,7 @@ public class YiSa : Enemy
// | | | |_| | |_) | | | (__
// |_| \__,_|_.__/|_|_|\___|
- ///
- /// 攻击之间的间隔时间
- ///
- [Header("攻击之间的间隔时间")][FoldoutGroup("以撒")]
- public float timeBetweenAttacks;
+
///
/// 攻击用鬼魂的预制体
///
@@ -31,6 +27,16 @@ public class YiSa : Enemy
///
[Header("鬼魂攻击玩家时,生成位置离玩家的距离")][FoldoutGroup("以撒")]
public float atkOffsetDistance;
+ ///
+ /// 疯狂的鬼魂的攻击间隔时间
+ ///
+ [Header("疯狂的鬼魂的攻击间隔时间")][FoldoutGroup("以撒")]
+ public float crazyGoustTimeBetweenAttacks;
+ ///
+ /// 正常的鬼魂的攻击间隔时间
+ ///
+ [Header("正常的鬼魂的攻击间隔时间")][FoldoutGroup("以撒")]
+ public float normalGoustTimeBetweenAttacks;
// _____ _ _
// | __ \ (_) | |
@@ -38,12 +44,30 @@ public class YiSa : Enemy
// | ___/ '__| \ \ / / _` | __/ _ \
// | | | | | |\ V / (_| | || __/
// |_| |_| |_| \_/ \__,_|\__\___|
+
+ ///
+ /// 攻击之间的间隔时间
+ ///
+ private float timeBetweenAttacks;
///
/// 返回类型为协程、参数为空的委托类型
///
private delegate IEnumerator Action();
private MyPlayer player;
+ ///
+ /// 目前是否处于狂暴状态
+ ///
+ [Header("目前是否处于狂暴状态")][FoldoutGroup("状态")][ReadOnly]
+ private bool isCrazy;
+ ///
+ /// 颜色补正,主要在狂暴系统中更改
+ ///
+ private Color colorOffset;
+ ///
+ /// 震动动画
+ ///
+ private Tweener shakeTweener;
// _____ _ _ ____ _
// / ____| | | | _ \ | |
@@ -55,6 +79,7 @@ public class YiSa : Enemy
void Start(){
Init();
//测试用开启
+ InCrazy();
StartCoroutine(StartAATK());
}
@@ -69,6 +94,10 @@ public class YiSa : Enemy
private void Init(){
//找到必要的物体和组件
player = FindObjectOfType();
+ //初始化攻击间隔时间
+ timeBetweenAttacks = normalGoustTimeBetweenAttacks;
+ //初始化颜色补正
+ colorOffset = Color.white;
}
///
@@ -117,8 +146,10 @@ public class YiSa : Enemy
appearPos,
Quaternion.identity
).GetComponent();
+ //给鬼魂以颜色补正
+ t.GetComponent().DOColor(colorOffset,2f);
//让鬼魂淡出
- Tweener tweener = t.GetComponent().DOFade(1,0.5f);
+ //Tweener tweener = t.GetComponent().DOFade(1,0.5f);
//记录一下本次攻击的冲撞方向
Vector2 rushDir = player.transform.position - t.transform.position;
//告知该鬼魂执行冲撞攻击
@@ -135,8 +166,10 @@ public class YiSa : Enemy
goust,player.transform.position +
new Vector3(0,2f,0),Quaternion.identity
).GetComponent();
- //0.5秒淡入显示鬼魂
- Tweener tweener = t.GetComponent().DOFade(1,0.5f);
+ //给鬼魂以颜色补正
+ t.GetComponent().DOColor(colorOffset,2f);
+ // //0.5秒淡入显示鬼魂
+ // Tweener tweener = t.GetComponent().DOFade(1,0.5f);
//给玩家一秒的反应时间
yield return new WaitForSeconds(1f);
t.LightningATK();
@@ -148,6 +181,34 @@ public class YiSa : Enemy
///
public void ATKEnd(){StartCoroutine(StartAATK());}
+ ///
+ /// 进入狂暴状态
+ ///
+ private void InCrazy(){
+ //修改标记表示开始狂暴
+ isCrazy = true;
+ //修改攻击间隔时间
+ timeBetweenAttacks = crazyGoustTimeBetweenAttacks;
+ //修改鬼魂颜色补正
+ colorOffset = Color.red;
+ //让石像震动
+ shakeTweener = transform.DOShakePosition(0.5f,0.1f,50,90,false,false).SetLoops(-1);
+
+ }
+ ///
+ /// 脱离狂暴装填
+ ///
+ private void OutCrazy(){
+ //消除狂暴标记
+ isCrazy = false;
+ //修改攻击间隔时间
+ timeBetweenAttacks = normalGoustTimeBetweenAttacks;
+ //修改鬼魂颜色补正
+ colorOffset = Color.white;
+ //让石像停止震动
+ shakeTweener.Kill();
+ }
+
// ______ _
// | ____| | |
// | |____ _____ _ __ | |_
@@ -159,6 +220,18 @@ public class YiSa : Enemy
/// 当有男童被救的时候从男童触发
///
public void OnSave(Boy boy){
+ //当有男童被救,触发狂暴
+ InCrazy();
+ }
+
+ public override void OnBeHit(MyPlayer.AtkMethod hitMethod, int hitDir){
+ //只有狂暴状态会受击
+ if(isCrazy){
+ //结算生命值
+ HPLeft -= MyPlayer.atkMethodMagnification[hitMethod];
+ //解除狂暴
+ OutCrazy();
+ }
}
diff --git a/Assets/Scripts/Boss/以撒/YiSaGoust.cs b/Assets/Scripts/Boss/以撒/YiSaGoust.cs
index 6d4a670..024cd82 100644
--- a/Assets/Scripts/Boss/以撒/YiSaGoust.cs
+++ b/Assets/Scripts/Boss/以撒/YiSaGoust.cs
@@ -18,20 +18,24 @@ public class YiSaGoust : MonoBehaviour
///
/// 落雷的游戏物体
///
- [Header("落雷的游戏物体")]
+ [Header("落雷的游戏物体")][HideInInspector]
public GameObject lightning;
+ private CapsuleCollider2D capsuleCollider2D;
void Start(){
Init();
}
private void Init(){
//找到必要的组件和物体
owner = FindObjectOfType();
+ capsuleCollider2D = GetComponent();
//如果落雷没有落雷组件,则添加一个
+ lightning = GameObject.Find("落雷").transform.GetChild(0).gameObject;
if(!lightning.TryGetComponent(out Lightning t))
lightning.AddComponent();
}
public void RushATK(Vector2 rushDir){
//创建并执行一段冲锋的动画
+ capsuleCollider2D.enabled = true;
Tweener tweener = transform.DOMove(
transform.position + (Vector3)rushDir * 2,
rushTime
@@ -39,6 +43,7 @@ public class YiSaGoust : MonoBehaviour
tweener.SetEase(Ease.InElastic);
//结束后,鬼魂逐渐消隐
TweenCallback action = () => {
+ capsuleCollider2D.enabled = false;
GetComponent().DOFade(0,1);
//消隐结束后删除自己
Invoke("DestroySelf",1.1f);
diff --git a/Assets/Scripts/玩家/MyPlayer.cs b/Assets/Scripts/玩家/MyPlayer.cs
index ee92336..c494f96 100644
--- a/Assets/Scripts/玩家/MyPlayer.cs
+++ b/Assets/Scripts/玩家/MyPlayer.cs
@@ -461,6 +461,10 @@ public class MyPlayer : MonoBehaviour, Boomer.I_CanBeBoomedObj
BeHitToFly(dir);
//标记自身不受控制
inControl = false;
+ //交互中断
+ isInteractive = false;
+ if(catching != null)
+ catching.OnCallCancel();
//掉血
HPLeft -= atk;
//震动屏幕和手柄
diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset
index 784a268..58358f2 100644
--- a/ProjectSettings/Physics2DSettings.asset
+++ b/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: bfffffffbfffffffbbfeffffbfffffffbfffffffbfffffff00ffffff3ffdfffffbffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ m_LayerCollisionMatrix: bfffffffbfffffffbbfeffffbff7ffffbfffffffbfffffff00ffffff3ffdfffffbffffff7ffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset
index cbd0c40..ad9baba 100644
--- a/ProjectSettings/TagManager.asset
+++ b/ProjectSettings/TagManager.asset
@@ -18,7 +18,7 @@ TagManager:
- "\u5730\u9762"
- "\u7A7A\u6C14\u5899"
- "\u53CD\u5F39\u70B8\u5F39"
- -
+ - "\u4EE5\u6492\u96D5\u50CF"
-
-
-