Unity开发实战:实现玩家被攻击后的相机晃动效果
创作时间:
作者:
@小白创作中心
Unity开发实战:实现玩家被攻击后的相机晃动效果
引用
CSDN
1.
https://blog.csdn.net/weixin_43908355/article/details/139088094
在Unity游戏中实现玩家被攻击后的相机晃动效果,不仅能增强游戏的沉浸感,还能提升玩家的游戏体验。本文将详细介绍如何通过调整相机位置来实现这一效果,包括场景设置、原理分析和具体代码实现。
方法说明
本文的技术分享来源于siki学院的Unity项目《捕鱼达人》,主要介绍了如何实现玩家被Boss攻击时的震动效果。具体效果是通过调整相机移动,使视觉上产生玩家面板剧烈晃动的感觉。
使用场景说明
- 画面变红效果:当玩家被Boss攻击时,Canvas下的红色贴图会显示,以视觉上提示玩家正在被攻击。
- 碰撞触发机制:在3D场景中,Plane作为游戏场景的基础平面,各种游戏对象(如鱼、Boss、贝壳、子弹等)都在其上活动。当Boss与虚拟枪位(例如图中蓝色大鱼的位置)发生碰撞时,会触发被攻击事件。
- 震动脚本实现:震动效果的脚本
Shake直接挂在MainCamera上,主要实现两个功能:
- 显示Canvas下被攻击时的贴图
- 调整3D场景下
MainCamera的位置,产生震动的感官体验
核心代码实现
振幅随机数设置公式
使用效果较好的振幅随机数设置公式为:
Random.Range(0f, 振动系数) - 振动系数 * 0.5f
具体实现代码如下:
// 镜头x方向抖动
transform.position = new Vector3((Random.Range(0f, cameraShake)) - cameraShake * 0.5f, transform.position.y, transform.position.z);
// 镜头z方向抖动
transform.position = new Vector3(transform.position.x, transform.position.y, (Random.Range(0f, cameraShake)) - cameraShake * 0.5f);
完整代码实现
下面是完整的Shake类代码,用于实现被攻击时的震动效果:
using UnityEngine;
/// <summary>
/// 被攻击时,玩家产生的震动方法
/// </summary>
public class Shake : MonoBehaviour
{
private float cameraShake = 5; // 震动系数
public GameObject UI; // 被攻击时显示的红色贴图
void Update()
{
ShakeCamera(); // 时时检测是否有被攻击。
}
/// <summary>
/// 被撞击效果
/// 除了Update里时时检测,
/// 还可以在检测是否攻击玩家的脚本,或Boss脚本里执行攻击操作时
/// 使用委托调用:Invoke("ShakeCamera");
/// </summary>
private void ShakeCamera()
{
// Gun.Instance:包含判断虚拟枪/玩家是否被攻击的方法的脚本Gun
if (Gun.Instance.bossAttack) // 相关的脚本里设置的:Boss是否攻击玩家的bool变量
{
UI.SetActive(true); // 被攻击时的特效图显示
transform.position = new Vector3((Random.Range(0f, cameraShake)) - cameraShake * 0.5f, transform.position.y, transform.position.z); // 镜头x方向移动
transform.position = new Vector3(transform.position.x, transform.position.y, (Random.Range(0f, cameraShake)) - cameraShake * 0.5f); // 镜头z方向移动
cameraShake = cameraShake / 1.05f; // 减小振幅
if (cameraShake < 0.05f) // 当振幅过小时,停止被撞击效果
{
cameraShake = 0; // 振幅系数置0
UI.SetActive(false); // 关闭被攻击时的特效图
Gun.Instance.bossAttack = false; // 禁止震动
}
}
else
{
cameraShake = 5; // 不需要震动时,把震动系数还原
}
}
}
通过以上代码,可以实现一个简单的玩家被攻击后的震动效果。这个效果不仅增强了游戏的视觉体验,还能帮助玩家更好地感知游戏状态。
热门推荐
探究生茶的制作工艺及饮用方法
家装的业务模式(家装的数字化之路系列)
APQP-流程和5M变更管理
古风雅号:探索古人起外号的艺术与智慧
英超 曼彻斯特城VS纽卡斯尔联
普洱茶越陈越香?保质期真的有期限吗?
全面认识AI Agent,一文读懂AI智能体的架构指南
保温杯保养技巧:延长使用寿命的关键
三相异步电机广泛应用于哪些方面?
云南旅游见的红色果:从羊奶果到红毛丹,一场味蕾上的奇幻之旅
一周晚餐食谱已备好,到家照着做,简单美味,天天都不带重样
公元5世纪,罗马帝国是如何一步步走向灭亡的?
如何通过URL分析危险链接特征
全球经济影响力大不如前 本次G7峰会是多年来“最弱”的一场聚会?
舌根放血有什么好处和坏处
云南旅游见的红色果:从羊奶果到红毛丹,一场味蕾上的奇幻之旅
汽车超载的法律规定和处罚措施如何?了解这些规定对安全驾驶有何影响?
中国体操名将因虐待队员遭禁 为成绩这代价值得吗
数学与物理之间到底有什么关系?其中或蕴藏着宇宙基本规律!
分析|到底想竞争还是想摆烂?英格拉姆交易评级:猛龙C+ 鹈鹕B
免疫组化(IHC)技术在临床诊断与治疗中的应用探索
U20亚洲杯:传统八强首轮六胜,日伊澳优势明显
蓝牙耳机大揭秘:挂耳耳机使用误区与选购指南
《世界宗教源流史》伊斯兰教之三十三:瓦哈比运动的发展1
都叫花梨,价差万倍:花梨木排行榜
智能排班表系统设计需要考虑哪些用户体验因素?
成长的轨迹与梦想:家庭教育中的亲子合作与孩子未来愿景的描绘
精灵宝可梦如何展现不同文化元素的融合
打造流畅游戏体验:英雄联盟电脑主机配置及性能优化指南
1杯咖啡中含有多少咖啡因?