Roman 37ccc08c85 任务:搭建基本的系统
1.编写塞钱箱逻辑
(1.初始为有钱
(2.创建事件,当被塞钱,修改塞钱箱状态
(3.创建事件,当被拿钱,修改塞钱箱状态
(*:修改塞钱箱继承自普通可交互物体

2.编写玩家塞钱逻辑
(1.创建交互按键,当检测到交互执行,执行所catch物体的OnCall,根据所catch物体不同触发不同的动作。当catch到的是塞钱箱,执行塞钱功能
(2.创建塞钱功能,持有特殊金币-1

3.修改爱欲品掉钱逻辑
(1.修改死亡事件,当检测到主人为地藏并且玩家身上已经没钱了的时候,生成一个特殊硬币

4.编写特殊硬币逻辑
(1.继承于可交互物体(×)
(2.OnCall的时候触发玩家加钱功能
(3.物理层上不与除地面以外的其他东西碰撞
(4.捡拾上,给硬币添加一个子物体,通过子物体上的触发器和攻击类来判断捡拾与否

5.编写地藏拿钱攻击逻辑
(*.参照钟的逻辑
(1.新建地藏手
(2.新建组件:地藏手
(3.收到攻击信号后,从外部从上至下伸入一只手,伴随抖动,到一定位置后停止
(4.手有碰撞体,触碰到玩家时,对玩家造成伤害
(5.抄一段普通怪物的受击逻辑,当手被攻击了,触发动画,稍微抬起一小段,并且剧烈震动,同时通知主人被打

6.整理脚本

至此,关卡已经能按照正常的逻辑跑起来了
2021-12-11 02:12:12 +08:00

50 lines
1.1 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 用来塞的钱那个类,但是是小怪打死后掉落的那种
/// </summary>
[RequireComponent(typeof(BoxCollider2D))]
[RequireComponent(typeof(Rigidbody2D))]
public class Coin : MonoBehaviour
{
public Rigidbody2D m_rigidbody;
void Start(){
Init();
}
void Init(){
m_rigidbody = GetComponent<Rigidbody2D>();
transform.GetChild(0).gameObject.AddComponent<PickUpCoin>().owner = this;
}
public void PlayerPickUpMe(){
Destroy(gameObject);
}
/// <summary>
/// 本类的工具类,初始化时给子物体装一个组件,用来检测玩家是否能捡拾硬币
/// </summary>
private class PickUpCoin : Interactive
{
/// <summary>
/// 这个捡拾范围所存在于的硬币
/// </summary>
public Coin owner;
void Start(){
Init();
}
private void Init(){
itemName = ItemName.;
}
public override void OnCall(){
owner.PlayerPickUpMe();
}
}
}