
1.编写伊斯兰小怪逻辑 (1.继承于Enemy类 (2.初始化时直接为Seek状态 (3.每帧执行Seek函数,让其水平方向有冲向玩家的速度 (4.当触发Touch玩家事件,伊斯兰触发协程Boom (*.给伊斯兰类添加触发器监听,当玩家进入触发器范围,标记可以炸到玩家;当玩家离开触发器,标记无法炸到玩家 (5.当Boom执行时,标记自身为dead,关闭自身碰撞体,抄一下NormalEnemy的被击飞函数,并使刚体开始旋转。同时判定玩家是否可被炸到,若能,击飞玩家并造成相对的伤害值。 (6.从NormalEnemy代码复制过来了受击逻辑 *:整理伊斯兰代码 至此,伊斯兰小怪的逻辑基本开发完毕 *修复攻击时能够转身的问题 2.编写屏幕和手柄震动相关逻辑 (1.设计震动类 (2.设计静态方法ShakeScream和ShakePad,其中ShakePad为协程,调用时请使用StartContinue。 3.为玩家起跳添加屏幕晃动和手柄震动
38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Cinemachine;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine.InputSystem;
|
|
|
|
/// <summary>
|
|
/// 震动管理员,管理相机和手柄的震动,外部调用静态方法
|
|
/// </summary>
|
|
public class VibrationManager : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// 震动相机,仅对于一些微小短小震动使用
|
|
/// </summary>
|
|
/// <param name="dir">震动方向</param>
|
|
/// <param name="force">震动力度</param>
|
|
public static void ShakeScream(Vector2 dir,float force){
|
|
FindObjectOfType<CinemachineImpulseSource>().
|
|
GenerateImpulse(dir * force);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 震动手柄
|
|
/// </summary>
|
|
/// <param name="left">左马达力度(低频)</param>
|
|
/// <param name="right">右马达力度(高频)</param>
|
|
/// <param name="time">震动时间</param>
|
|
public static IEnumerator ShakePad(float left, float right, float time){
|
|
if(Gamepad.current != null){
|
|
Gamepad.current.SetMotorSpeeds(left,right);
|
|
yield return new WaitForSeconds(time);
|
|
Gamepad.current.SetMotorSpeeds(0,0);
|
|
}
|
|
}
|
|
|
|
}
|