258 lines
9.2 KiB
C#
Raw Normal View History

任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Sirenix.OdinInspector;
/// <summary>
/// 爱欲品类,继承自三关都有的那个小怪类
/// </summary>
public class AiYuPin : NormalEnemy
{
// _____ _ _ _
// | __ \ | | | (_)
// | |__) | _| |__ | |_ ___
// | ___/ | | | '_ \| | |/ __|
// | | | |_| | |_) | | | (__
// |_| \__,_|_.__/|_|_|\___|
/// <summary>
/// 爱欲品抓住玩家后贴在玩家身上时的位置偏移量
/// </summary>
[FoldoutGroup("爱欲品")][Header("爬到玩家身上的时候的位置偏移量")]
public Vector3 catchOffset;
/// <summary>
/// 玩家挣脱爱欲品需要多少次方向转换操作
/// </summary>
[Header("玩家挣脱爱欲品需要多少次方向转换操作")][FoldoutGroup("爱欲品")]
public int breakFreeCount;
/// <summary>
/// 玩家挣脱爱欲品还需要多少次方向转换操作
/// </summary>
[Header("玩家挣脱爱欲品还需要多少次方向转换操作")][FoldoutGroup("爱欲品")][ReadOnly]
public int breakFreeCountLeft;
/// <summary>
/// 这个爱欲品有主人吗?也就是地藏
/// </summary>
[HideInInspector]
public bool hasOwner;
/// <summary>
/// 打死后掉落的钱的预制体
/// </summary>
[Header("打死后掉落的钱的预制体")][FoldoutGroup("预制体")]
public GameObject coinObj;
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
// _____ _ _
// | __ \ (_) | |
// | |__) | __ ___ ____ _| |_ ___
// | ___/ '__| \ \ / / _` | __/ _ \
// | | | | | |\ V / (_| | || __/
// |_| |_| |_| \_/ \__,_|\__\___|
/// <summary>
/// 爱欲品发动Seek后追击的目标
/// </summary>
//虽说是目标,但爱欲品只会抓玩家吧。直接初始化成玩家了
protected Transform target;
/// <summary>
/// 记录当前自己是否抓着玩家
/// </summary>
private bool isCatching = false;
任务:搭建前置关卡,编写演出逻辑 1.编写佛教前置关开场演出 (*.休整地形,使得左边多出一块地面,方便演出正常运作 (*.项目后期再通过逻辑触发该演出,目前先用调试方式触发演出 (1.关闭空气墙 (2.修改玩家inputDir使玩家从屏幕外冲进到屏幕内部 (3.等待一段时间 (4.此时玩家应该走到某个合适的位置,停止玩家的inputDir (5.等待一小段时间给玩家反应 (6.修改相机offset,使其对准对话的两个小怪 (7.等待一小段时间给玩家反应 (8.触发Fungus对话 (9.Fungus对话结束后,返回标记命令演出Main继续执行 *.修改NormalEnemy,添加标识isInFoStage,在Update中判断,若是,使该怪物水平方向上追踪玩家,可以参考爱欲品的Seek (10.修改左边小怪的isInFoStage (11.开启右边小怪的Path动画,表现其慌忙逃跑 (12.Invoke一个延时,等右边小怪逃出视野后删除它 (13.触发善后和结束事件 (14.重写善后事件,重新开启空气墙 2.搭建伊斯兰前置关卡 3.创建伊斯兰前置关卡演出 (1.关闭空气墙 (2.修改玩家inputDir使玩家从屏幕外冲进到屏幕内部 (3.等待一段时间 (4.此时玩家应该走到某个合适的位置,停止玩家的inputDir (5.等待一小段时间给玩家反应 (6.触发善后与结束事件 4.创建玩家隔间触发事件 (1.是进入式触发器对象 (2.触发时Call隔间演出 5.编写隔间演出逻辑 (1.表现关门 (2.左右晃一下镜头,中心移动到左右门处,表示门被关闭 (3.镜头回到玩家处,同时压缩相机可移动范围更窄 (4.打开隔间墙壁的空气墙 (5.设置EndEvent为伊斯兰事件 6.编写召唤伊斯兰事件 (1.摘自木马的召唤攻击,稍作修改 (2.当召唤的伊斯兰全部挂了,触发隔间结束事件 7.编写隔间结束事件 (1.表现开门 (2.关闭隔间的空气墙 (3.重设相机移动范围 8.搭建基督前置关卡 *.至此,第一关、第二关前置关卡的逻辑基本开发完毕 *.明天能做完所有前置关,顺便应该能搭完村场景,后天可以开始搭建新系统,目前还差留言、死亡标记等系统等待编写 下班
2021-12-19 23:57:44 +08:00
private Animator aiYuPinAnimator;
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
// _____ _ _ ____ _
// / ____| | | | _ \ | |
// | | __ _| | | |_) | __ _ ___| | __
// | | / _` | | | _ < / _` |/ __| |/ /
// | |___| (_| | | | |_) | (_| | (__| <
// \_____\__,_|_|_|____/ \__,_|\___|_|\_\
void Update(){
//如果在Seek状态则Seek
if(state == State.seek) Seek(target);
if(isCatching){
//将自身位置和玩家位置同步但是需要一个附身offset二维向量
//因为玩家的图片不在游戏物体的中心
transform.position = target.position + catchOffset;
}
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
}
// _ _ _
// | \ | | | |
// | \| | ___ _ __ _ __ ___ __ _| |
// | . ` |/ _ \| '__| '_ ` _ \ / _` | |
// | |\ | (_) | | | | | | | | (_| | |
// |_| \_|\___/|_| |_| |_| |_|\__,_|_|
protected override void Init()
{
//找到必要的游戏物体和组件
任务:搭建前置关卡,编写演出逻辑 1.编写佛教前置关开场演出 (*.休整地形,使得左边多出一块地面,方便演出正常运作 (*.项目后期再通过逻辑触发该演出,目前先用调试方式触发演出 (1.关闭空气墙 (2.修改玩家inputDir使玩家从屏幕外冲进到屏幕内部 (3.等待一段时间 (4.此时玩家应该走到某个合适的位置,停止玩家的inputDir (5.等待一小段时间给玩家反应 (6.修改相机offset,使其对准对话的两个小怪 (7.等待一小段时间给玩家反应 (8.触发Fungus对话 (9.Fungus对话结束后,返回标记命令演出Main继续执行 *.修改NormalEnemy,添加标识isInFoStage,在Update中判断,若是,使该怪物水平方向上追踪玩家,可以参考爱欲品的Seek (10.修改左边小怪的isInFoStage (11.开启右边小怪的Path动画,表现其慌忙逃跑 (12.Invoke一个延时,等右边小怪逃出视野后删除它 (13.触发善后和结束事件 (14.重写善后事件,重新开启空气墙 2.搭建伊斯兰前置关卡 3.创建伊斯兰前置关卡演出 (1.关闭空气墙 (2.修改玩家inputDir使玩家从屏幕外冲进到屏幕内部 (3.等待一段时间 (4.此时玩家应该走到某个合适的位置,停止玩家的inputDir (5.等待一小段时间给玩家反应 (6.触发善后与结束事件 4.创建玩家隔间触发事件 (1.是进入式触发器对象 (2.触发时Call隔间演出 5.编写隔间演出逻辑 (1.表现关门 (2.左右晃一下镜头,中心移动到左右门处,表示门被关闭 (3.镜头回到玩家处,同时压缩相机可移动范围更窄 (4.打开隔间墙壁的空气墙 (5.设置EndEvent为伊斯兰事件 6.编写召唤伊斯兰事件 (1.摘自木马的召唤攻击,稍作修改 (2.当召唤的伊斯兰全部挂了,触发隔间结束事件 7.编写隔间结束事件 (1.表现开门 (2.关闭隔间的空气墙 (3.重设相机移动范围 8.搭建基督前置关卡 *.至此,第一关、第二关前置关卡的逻辑基本开发完毕 *.明天能做完所有前置关,顺便应该能搭完村场景,后天可以开始搭建新系统,目前还差留言、死亡标记等系统等待编写 下班
2021-12-19 23:57:44 +08:00
aiYuPinAnimator = GetComponent<Animator>();
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
//初始化基础属性
base.Init();
//初始化爱欲品属性
breakFreeCountLeft = breakFreeCount;//初始化挣脱需要的操作次数
target = FindObjectOfType<MyPlayer>().transform;//初始化追踪目标为玩家
if(FindObjectOfType<DiZang>()) hasOwner = true;
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
}
/// <summary>
/// 控制爱欲品追踪传入的Transform每帧调用一次
/// </summary>
/// <param name="target">要追踪的目标的transform组件</param>
protected virtual void Seek(Transform target){
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
Vector3 moveDir = (target.transform.position - transform.position).normalized;
// //给刚体添加位移
// m_rigidbody.position += (Vector2)moveDir * speed * Time.deltaTime * Vector2.right;
//给刚体以速度
if(canBeHit)
m_rigidbody.velocity = new Vector2(
((moveDir.x > 0) ? 1 : -1) * speed,
m_rigidbody.velocity.y
);
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
//将面部朝向与速度同步
transform.rotation = Quaternion.
Euler
(transform.rotation.x,
((target.position.x - transform.position.x > 0) ? 0:-180),
transform.rotation.z);
}
/// <summary>
/// 制造一个特殊的钱,用来塞钱的那种
/// </summary>
private void MakeAnCoin(){
GameObject coin = Instantiate(
coinObj,
transform.position,
Quaternion.identity
);
coin.GetComponent<Rigidbody2D>().velocity = new Vector2(
Random.Range(-1f,1f),
Random.Range(-1f,1f)
).normalized * (5f);
}
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
// ______ _
// | ____| | |
// | |____ _____ _ __ | |_
// | __\ \ / / _ \ '_ \| __|
// | |___\ V / __/ | | | |_
// |______\_/ \___|_| |_|\__|
/// <summary>
/// 当爱欲品发现玩家
/// </summary>
任务:流程化游戏 *.编写黑块逻辑 (*.具有状态in、all、out (1.当被呼出,执行呼出事件 ((1.分type执行“入”的Tween动画 ((2.入动画结束后,修改自身状态至all ((3.等待一定的加载时间后,修改自身状态为out,并开始出动画 ((4.出动画结束后,找到“开幕演出”游戏物体,找到它的Stage并触发 ((5.完成善后工作,将块移回原来的位置 (2.start时,检查场景内是否有其他转场块。若有,删除自己 1.制作转场 (1.触发转移 (2.关闭操作地图 (4.令玩家一直向右移动 (3.呼出黑块 (4.等待、直到黑块进入全覆盖状态 (5.根据字典经行场景转移 (6.黑块内部协程级时结束后,揭开黑幕 (7.揭开动画结束后 (8.找到“开幕演出”游戏物体,找到它的Stage并触发 3.流程化游戏 (1.将各个场景简单连接 4.修改各场景开幕演出,使开幕演出时修改玩家位置至指定位置 5.制作和替换美术素材,增加部分动画 (1.制作地藏石像动画 *优化和修复 1.修复佛教前置关陷阱小怪抽动的问题 2.修复佛教前置关掉怪陷阱下落太慢的问题 建议: 1.给普通关卡和村也加上类似Boos的全局shader,目前从关卡间过度的时候能够看出明显的区别 2.建议给地藏敲钟攻击的灰尘加上渐隐,目前是瞬间消失的,十分违和 3.建议给普通的炸弹也加上拖尾,很酷 4.以撒发怒时变红太快了,消散得也太快了 5.以撒鬼魂的粒子也建议加上淡入和淡出 *.至此,已经基本完成了游戏的流程化,已经能够顺利地连成一条线了,并且可以在关卡失败的时候在当前场景重生 *.接下来就是填充剧情和美化场景,明天应该能把数据库互动做好 下班
2021-12-23 01:19:03 +08:00
public override void OnFindThePlayer(Transform target){
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
//如果没死
if(state == State.wander)
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
{
//标记自身状态
state = State.seek;
//赋予自身目标以玩家Transform
this.target = target;
//关闭巡逻动画
doTweenPath.DOPause();
}
}
/// <summary>
/// 当爱欲品抓住玩家
/// </summary>
protected override void OnTouchThePlayer(MyPlayer player)
{
//如果玩家没有被抓住,才执行抓住
if(!player.isCatching){
//通知玩家,你被爱欲品附身了
player.BeCatchedByAiYuPin(this);
//暂停Path动画
doTweenPath.DOPause();
//改变自身状态为ATK
state = State.atk;
//关闭自身碰撞体,因为要贴在玩家身上
GetComponent<BoxCollider2D>().enabled = false;
//将自身位置和玩家位置同步但是需要一个附身offset二维向量
//因为玩家的图片不在游戏物体的中心
transform.position = target.position + catchOffset;
//暂时清空重力系数
m_rigidbody.gravityScale = 0;
//清除一下刚体速度,不然怪物可能被创飞
m_rigidbody.velocity = Vector2.zero;
//清除角动量,不然可能会转起来
m_rigidbody.angularVelocity = 0;
//标记自身正抓着玩家
isCatching = true;
//执行抓住动画
if(aiYuPinAnimator != null) aiYuPinAnimator.SetBool("isBeHit",false);
if(aiYuPinAnimator != null) aiYuPinAnimator.SetBool("isATK",true);
}
//如果玩家正被抓着则执行父类——普通小怪的Touch即击飞玩家
else{
base.OnTouchThePlayer(player);
//同时,清空当前附身着的爱欲品的挣脱次数
player.catingAiYuPin.breakFreeCountLeft = breakFreeCount;
}
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
}
/// <summary>
/// 当爱欲品被攻击了
/// </summary>
/// <param name="hitMethod">攻击方式</param>
/// <param name="hitDir">攻击来袭方向</param>
public override void OnBeHit(MyPlayer.AtkMethod hitMethod, int hitDir){
Squashed commit of the following: commit bf213bea549de72d8545a79c04e46b25d5a37b26 Author: SAIPO <grasste0403@hotmail.com> Date: Tue Dec 28 05:01:18 2021 +0800 优化游戏特效及制作游戏音效 优化: 1.基督小怪的shader添加完毕,但是小怪的闪电似乎有bug,见末尾bug集合 2.给炸弹爆炸加入了粒子特效 3.优化了死亡的屏幕后特效,现在做到了只有黑白区域才会渲染死亡鬼魂的效果 音效: 1.制作了地藏的全部音效 2.制作了特洛伊木马的全部音效 3.制作了以撒的全部音效 4.制作了玩家 跳跃,挥锤子,扔镰刀,受击,死亡,与击中敌人的音效,目前还缺少交互音效 5.制作了爱欲品的抱人音效 6.制作了所有与爆炸相关的音效 音效大体上已经制作完毕,逻辑也已经写完了 如果有不合适的音效改起来还算容易 问题: 1.目前在交互时(对话,看牌子),玩家可以进行挥砍和跳跃 2.基督石像的雷击效果只有一半不知道是不是bug 3.基督石像我没有找到他的受击函数,所以他的受击音效我没有制作 下班,绷不住了,真就干了后半夜。 commit 0d7446d2e7a625f033cda6acc496c6cddfe2d75f Author: SAIPO <grasste0403@hotmail.com> Date: Sat Dec 25 22:53:32 2021 +0800 修改建议及完善特效 修改建议: 1.添加了击中的粒子特效,但是还需要迭代 2.修复马死后灰尘不会消失的bug 完善特效 1.制作了死亡时的阴间特效,已经在全场景实装 2.制作了闪电的辉光特效。 3.调整了所有场景的全局shader以适配死亡阴间特效 # Conflicts: # Assets/Prefabs/基督闪电攻击器.prefab # Assets/Prefabs/死亡玩家.prefab # Assets/Scenes/DiZangStageTest.unity # Assets/Scenes/Fo.unity # Assets/Scenes/Ji.unity # Assets/Scenes/TeLuoYiStageTest.unity # Assets/Scenes/Yi.unity # Assets/Scenes/YiSaStageTest.unity # Assets/Scenes/cun.unity # Assets/Scripts/Boss/木马/TrojanHorse.cs # Assets/Scripts/演出/以撒/YiSaOpeningStage.cs # Assets/Scripts/玩家/MyPlayer.cs # Assets/Shader/大落雷/Shader Graphs_大落雷.mat # Assets/Shader/阴间/Shader Graphs_阴间.mat # Assets/Shader/阴间/阴间.shadergraph # UserSettings/EditorUserSettings.asset
2021-12-28 14:04:09 +08:00
attackAudio.Play();
//被打飞在着地前都不会挨打了
canBeHit = false;
//执行被击飞、死亡检查等事宜
base.OnBeHit(hitMethod, hitDir);
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
//爱欲品会额外触发发现玩家事件
target = FindObjectOfType<MyPlayer>().transform;//将目标指向玩家
OnFindThePlayer(target);//触发发现玩家事件
//执行受击动画
if(aiYuPinAnimator != null) aiYuPinAnimator.SetBool("isBeHit",true);
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
}
//原先会触发自动返回记录起点,但是不能,所以重写空的重新着地事件
public override void OnRetouchedTheGround(){
canBeHit = true;
//解除受击动画
if(aiYuPinAnimator != null) aiYuPinAnimator.SetBool("isBeHit",false);
}
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
/// <summary>
/// 完全挣脱的时候触发
/// </summary>
protected void OnBreakFreeCompletely(){
//恢复一下抓到玩家的时候消除的重力系数
m_rigidbody.gravityScale = 1;
//随机一个死亡面部朝向
deadDir = (Random.Range(-1f,1f) > 0) ? 1: -1;
//标记自身不再抓着玩家
isCatching = false;
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
//触发死亡事件
OnDead();
//给一个击飞
BeHitToFly((Random.Range(-1f,1f) > 0) ? 1: -1);
//通知玩家
FindObjectOfType<MyPlayer>().BreakFreeCompletely();
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
}
任务:流程化游戏 *.编写黑块逻辑 (*.具有状态in、all、out (1.当被呼出,执行呼出事件 ((1.分type执行“入”的Tween动画 ((2.入动画结束后,修改自身状态至all ((3.等待一定的加载时间后,修改自身状态为out,并开始出动画 ((4.出动画结束后,找到“开幕演出”游戏物体,找到它的Stage并触发 ((5.完成善后工作,将块移回原来的位置 (2.start时,检查场景内是否有其他转场块。若有,删除自己 1.制作转场 (1.触发转移 (2.关闭操作地图 (4.令玩家一直向右移动 (3.呼出黑块 (4.等待、直到黑块进入全覆盖状态 (5.根据字典经行场景转移 (6.黑块内部协程级时结束后,揭开黑幕 (7.揭开动画结束后 (8.找到“开幕演出”游戏物体,找到它的Stage并触发 3.流程化游戏 (1.将各个场景简单连接 4.修改各场景开幕演出,使开幕演出时修改玩家位置至指定位置 5.制作和替换美术素材,增加部分动画 (1.制作地藏石像动画 *优化和修复 1.修复佛教前置关陷阱小怪抽动的问题 2.修复佛教前置关掉怪陷阱下落太慢的问题 建议: 1.给普通关卡和村也加上类似Boos的全局shader,目前从关卡间过度的时候能够看出明显的区别 2.建议给地藏敲钟攻击的灰尘加上渐隐,目前是瞬间消失的,十分违和 3.建议给普通的炸弹也加上拖尾,很酷 4.以撒发怒时变红太快了,消散得也太快了 5.以撒鬼魂的粒子也建议加上淡入和淡出 *.至此,已经基本完成了游戏的流程化,已经能够顺利地连成一条线了,并且可以在关卡失败的时候在当前场景重生 *.接下来就是填充剧情和美化场景,明天应该能把数据库互动做好 下班
2021-12-23 01:19:03 +08:00
public override void OnDead(){
//停止攻击动画,执行受击动画
if(aiYuPinAnimator != null) aiYuPinAnimator.SetBool("isATK",false);
if(aiYuPinAnimator != null) aiYuPinAnimator.SetBool("isBeHit",true);
base.OnDead();
if(
hasOwner &&
target.GetComponent<MyPlayer>().specialMoneyCount == 0 &&
FindObjectOfType<Coin>() == null
)MakeAnCoin();
}
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
/// <summary>
/// 玩家尝试挣脱的时候触发这个
/// </summary>
public void OnBreakFree(){
任务:搭建基本的系统 1.替换动画源图片为攻击加长版 (*:新建动画“被击飞”并完成状态机逻辑 (*:删除旧动画源图片素材减小项目体积 *:修复攻击动画卡手问题 *:修复被击飞后朝向影响击飞结果的Bug 2.编写佛教小怪逻辑 (1.继承自NormalEnemy(*:与原备注不同,因为后期我发现用NormalEnemy更加合适更加简单) (2.与普通小怪一样,默认状态会巡逻 (3.当玩家进入感知范围,触发Seek (4.当玩家创到怪物,触发Atk (*:改变自身状态为ATK (*:关闭自身碰撞体,因为要贴在玩家身上 (*:将自身位置和玩家位置同步,但是需要一个附身offset二维向量,因为玩家的图片不在游戏物体的中心 (*:通知玩家,你被爱欲品附身了 (5.当怪物收到伤害,触发Seek (*:我决定后期根据具体地形完善爱欲品的Seek函数 (6.编写完全挣脱事件 (*:触发死亡事件 (*:死亡后给予随机方向的击飞和旋转 (*:添加public变量breakFreeCount,代表挣脱需要触发多少次方向变换 (*:添加public变量breakFreeCountLeft,代表现在还需要方向变换多少次才能挣脱 (7.添加挣脱行为事件,从player传来,减一点Left并且判断是否完全挣脱,若是则执行完全挣脱事件 3.整理脚本分层,添加摘要和注释 下班,明天写玩家挣脱逻辑和被抓逻辑 🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱🥱
2021-12-03 01:23:07 +08:00
if(--breakFreeCountLeft <= 0) OnBreakFreeCompletely();
}
}