
1.替换和实装美术素材 (1.制作基督小怪闪电动画 (2.替换镰刀CD贴图 (3.重做贵族动画 (4.添加交互按键提示,包含catching物体时浮现Y键,以及被缠抱时浮现摇杆转动动画 (5.实装特洛伊木马的召唤炸弹攻击的动画 (6.实装玩家鬼魂动画 2.填充剧情 *.新的演出继承自进入式触发器,OnCall内编写演出内容 *.村的开幕演出中额外补上:根据当前玩家进度开关事件碰撞体的功能 制作演出: (1.贵族之怒演出编写完毕 (2.农民之叹演出编写完毕 (3.爱欲之附演出编写完毕 (4.安拉之拉演出编写完毕 (5.以撒之童演出编写完毕 (6.那位大人演出编写完毕 *.修改村开幕演出逻辑,使开幕演出时根据进度显示和隐藏剧情的触发器 (7.修改地藏开场演出,让其开场先执行一次敲钟攻击,很帅 (8.修改伊斯兰前置关演出,加上神之对话 (9.修改以撒开幕演出,增加一小段展示段 *优化和修复 1.修复以撒大闪电多次判定的问题 2.修复只有佛教前置关有死亡记录显示的bug *.修复运行测试发现问题: 1.佛教前置关开幕演出走出太多 2.佛教前置关开幕演出角色名字没有替换 3.佛教前置关遮挡关系异常 4.伊斯兰前置关开幕演出走出太多 5.伊斯兰前置关忘记安排小怪 6.伊斯兰前置关隔间演出触发器不够高 7.基督前置关对话UI人物太大 8.读取留言板UI存在问题,需要在每个场景分别解决 9.伊斯兰前置关转移块颜色未改透明 10.增加以撒生命值 11.最终对话错别字 *.至此,游戏除了音乐音效部分基本完成,还差一些美术素材 *.进入最后阶段,调试和看修改结果时,务必调用当前场景的OnCall,否则可能触发深不可测的Bug *建议 1.给基督小怪的闪电添加shader 2.目前炸弹爆炸没有效果 下班
131 lines
4.3 KiB
C#
131 lines
4.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using DG.Tweening;
|
|
using Sirenix.OdinInspector;
|
|
|
|
/// <summary>
|
|
/// 以撒鬼魂类,控制以撒攻击时出现的鬼魂
|
|
/// </summary>
|
|
public class YiSaGoust : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// 冲撞将消耗的时间
|
|
/// </summary>
|
|
[Header("冲撞将消耗的时间")]
|
|
public float rushTime;
|
|
private YiSa owner;
|
|
/// <summary>
|
|
/// 落雷的游戏物体
|
|
/// </summary>
|
|
[Header("落雷的游戏物体")][HideInInspector]
|
|
public GameObject lightning;
|
|
|
|
[Header("粒子材质")]
|
|
#pragma warning disable 0108
|
|
public ParticleSystem particleSystem;
|
|
private CapsuleCollider2D capsuleCollider2D;
|
|
public Animator animator;
|
|
void Start(){
|
|
Init();
|
|
}
|
|
private void Init(){
|
|
//找到必要的组件和物体
|
|
animator = GetComponent<Animator>();
|
|
owner = FindObjectOfType<YiSa>();
|
|
capsuleCollider2D = GetComponent<CapsuleCollider2D>();
|
|
//如果落雷没有落雷组件,则添加一个
|
|
lightning = GameObject.Find("落雷").transform.GetChild(0).gameObject;
|
|
if(!lightning.TryGetComponent<Lightning>(out Lightning t))
|
|
lightning.AddComponent<Lightning>();
|
|
}
|
|
public void RushATK(Vector2 rushDir){
|
|
//创建并执行一段冲锋的动画
|
|
capsuleCollider2D.enabled = true;
|
|
Tweener tweener = transform.DOMove(
|
|
transform.position + (Vector3)rushDir * 2,
|
|
rushTime
|
|
);
|
|
tweener.SetEase(Ease.InElastic);
|
|
//结束后,鬼魂逐渐消隐
|
|
TweenCallback action = () => {
|
|
capsuleCollider2D.enabled = false;
|
|
GetComponent<SpriteRenderer>().DOFade(0,1);
|
|
StartCoroutine(SetParticleColor(particleSystem, 0, 1f));
|
|
//消隐结束后删除自己
|
|
Invoke("DestroySelf",1.1f);
|
|
//宣告攻击结束
|
|
owner.ATKEnd();
|
|
};
|
|
tweener.OnStepComplete(action);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 闪电攻击的时候触发
|
|
/// </summary>
|
|
public void LightningATK(){
|
|
//激活落雷
|
|
lightning.SetActive(true);
|
|
//将落雷的X位置改变到鬼魂的X
|
|
lightning.transform.position = new Vector3(
|
|
transform.position.x,
|
|
lightning.transform.position.y,
|
|
lightning.transform.position.z
|
|
);
|
|
//极短的时间后关闭落雷
|
|
Invoke("TurnOffLightning",0.2f);
|
|
//宣告攻击结束
|
|
owner.ATKEnd();
|
|
//淡出鬼魂
|
|
StartCoroutine(SetParticleColor(particleSystem, 0, 1f));
|
|
GetComponent<SpriteRenderer>().DOFade(0,1).OnStepComplete(()=>{
|
|
|
|
//淡出结束后,删除游戏物体
|
|
Destroy(gameObject);
|
|
});
|
|
}
|
|
|
|
private void TurnOffLightning(){lightning.SetActive(false);}
|
|
private void DestroySelf(){Destroy(gameObject);}
|
|
|
|
void OnTriggerEnter2D(Collider2D other)
|
|
{
|
|
//如果创到玩家
|
|
if(other.gameObject.TryGetComponent<MyPlayer>(out MyPlayer player)){
|
|
//告诉玩家,你被攻击了
|
|
player.OnBeHit(owner.ATK,
|
|
((transform.position.x -
|
|
player.transform.position.x)
|
|
> 0) ? 1 : -1);//通过自身位置和玩家位置的比较来返回玩家本次的受击方向
|
|
}
|
|
}
|
|
|
|
private class Lightning : MonoBehaviour
|
|
{
|
|
void OnTriggerEnter2D(Collider2D other){
|
|
//如果创到玩家
|
|
if(other.gameObject.TryGetComponent<MyPlayer>(out MyPlayer player)){
|
|
//告诉玩家,你被攻击了
|
|
player.OnBeHit(FindObjectOfType<YiSa>().ATK,
|
|
((transform.position.x -
|
|
player.transform.position.x)
|
|
> 0) ? 1 : -1);//通过自身位置和玩家位置的比较来返回玩家本次的受击方向
|
|
}
|
|
}
|
|
}
|
|
|
|
//修改粒子,使粒子淡出
|
|
private IEnumerator SetParticleColor(ParticleSystem particleSystem,float endValue,float speed)
|
|
{
|
|
#pragma warning disable 0618
|
|
Color color = particleSystem.startColor;
|
|
while (particleSystem.startColor.a>0)
|
|
{
|
|
yield return new WaitForSeconds(speed/255);
|
|
color.a -= 1;
|
|
particleSystem.startColor = color;
|
|
}
|
|
|
|
}
|
|
}
|