Unity开发实战:实现玩家被攻击后的相机晃动效果
创作时间:
作者:
@小白创作中心
Unity开发实战:实现玩家被攻击后的相机晃动效果
引用
CSDN
1.
https://blog.csdn.net/weixin_43908355/article/details/139088094
在Unity游戏中实现玩家被攻击后的晃动效果,不仅能增强游戏的沉浸感,还能提升玩家的游戏体验。本文将详细介绍如何通过调整相机位置来实现这一效果,包括具体的代码实现和应用场景说明。
方法说明
本文的技术分享来源于siki学院的Unity项目《捕鱼达人》。通过调整相机的移动,可以实现玩家被Boss攻击时的震动效果。具体应用场景包括:
- 当玩家被Boss攻击时,画面会显示红色(通过Canvas下的红色贴图实现)。
- 在3D场景中,当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);
完整代码实现
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; // 不需要震动时,把震动系数还原
}
}
}
通过以上代码,可以实现玩家被攻击时的相机震动效果。这个效果不仅增强了游戏的视觉体验,还能帮助玩家更好地感知游戏状态。
热门推荐
学生走出去家长请进来“家校社联动”更加紧密
陕西辣椒 vs 四川辣椒:谁更适合做辣椒油?
自制辣椒油的详细步骤分享:香喷喷的美味秘诀
中端羽毛球拍选购指南:川崎穿越、李宁雷霆、小隼与小鬼斩对比评测
初学者必看:羽毛球装备选购攻略与实用心得
羽毛球装备价格飙升,如何选购高性价比产品?
冬游太平湖:邂逅皖南最美的冬日画卷
掌握正确的野生红茶冲泡技巧,品味普洱茶之外的醇厚口感
玩转太平湖:自然美景与户外活动的完美融合
太平湖森林小镇:石漠化治理的云南样本
喝茶睡不著怎麼辦?平時補充晚安多酚及4大解決方法有幫助
红茶爱好者必读:了解6大益处与饮用禁忌,让你喝得安心又健康
茶艺工作室:传承茶文化,弘扬传统技艺
去新西兰打工可靠吗?先看看新西兰打工真实收入水平
重庆冬日耍雪地图发布,四大玩雪胜地等你来
团综热潮再起!《永夜星河》与《大侦探》能否让观众满意?
牙龈肿痛?试试这三种超级食物!
牙龈肿痛?试试按按耳朵!
牙龈肿痛?牙周病医生教你快速缓解!
牙龈肿痛?试试白云山口炎清颗粒!
南海之梦号邮轮:带你深入探访西沙群岛
永兴岛:西沙群岛的最大岛屿,南海上的璀璨明珠
西沙群岛:《中国国家地理》推荐的最美海岛
二氧化锰:电动汽车电池的关键材料
实验室里的化学魔法:二氧化锰与浓盐酸的秘密
NHK再揭731部队罪行:松村高夫新发现
揭秘731部队:北野政次与石井四郎的逃脱之路
红茶的健康益处,让你更爱它!
红茶、绿茶、乌龙茶有何不同?哪一种对体重管理更有帮助?
红茶养胃护肝之旅:品种揭秘与科学饮用法