unity3d - 相机跟随播放器时的相机抖动效果
问题描述
我正在开发一个 3d 游戏,其中相机不断跟随玩家对象。现在,当炸弹击中玩家对象时,我想播放带有爆炸粒子效果的相机抖动。
我已经为相机抖动编码了这个:
public IEnumerator PlayCameraShakeAnimation(float duration, float magnitude)
{
Vector3 originalPosition = transform.localPosition;
float elapsedTime = 0f;
while(elapsedTime < duration)
{
float x = Random.Range(-1f, 1f) * magnitude;
float y = Random.Range(-1f, 1f) * magnitude;
transform.localPosition = new Vector3(x, y,originalPosition.z);
elapsedTime += Time.deltaTime;
yield return null;
}
transform.localPosition = originalPosition;
}
Camera Follow 是我为跟随玩家而编写的普通脚本。由于正在运行 Camera Follow 脚本,我们无法在屏幕上显示相机抖动效果。
如果我关闭相机跟随脚本,那么我们可以清楚地看到相机抖动,否则不会。
如果我关闭相机跟随脚本一小段时间,那么我在跟随玩家时会失去流畅性,因为玩家位置在爆炸后会更新。因此,当我重新开始跟随玩家时,它会在运动中猛烈地到达目标位置。
此外,相机在两个领域中都跟随玩家的位置和旋转。现在为我提供一些建议,以在跟随玩家的同时实现相机抖动效果。
解决方案
这实际上很简单:
将其分成两个 GameObjects:
parentObject
|--Camera
parentObject
跟随玩家。Camera
→localPosition
相对于parentObject
结果:在parentObject
跟随玩家Camera
时,它会自动随之移动。无需打开任何东西;)
推荐阅读
- javascript - JS缩短使用对象创建数组
- html - 如何水平对齐 div 旁边的图像
- cassandra - 未找到请求的操作集的 Spring Data Cassandra 编解码器
<-> java.util.Set - mysql - sql中的时差计算
- javascript - javascript - 在特定字符串之后和下一个冒号之前检索字符串
- asp.net-mvc - ASP.NET 引导导航栏样式
- jquery - 希望 youtube 视频在悬停时播放,但也不在暂停时显示建议的视频
- r - 在闪亮中为 checkboxGroupInput() 使用一组动态选择
- amp-html - 'amp-fit-text' 中的 'min-font-size' 属性在 'amp-list' 块内不起作用
- php - MySQL PHP 列更新查询