当子弹击中某物时,如何在 Unity 中摇晃相机?
How to shake the camera in Unity when the bullet hits something?
这里找到了一个抖动相机的代码:https://gist.github.com/ftvs/5822103
但如果我只想在子弹击中某物时摇动相机,如何使用它?
在您发布的 link 中有:
// How long the object should shake for.
public float shake = 0f;
如果shake
变量设置为例如1,只要它大于1,相机就会抖动。该代码正在减小该值,以便您设置的数字等于您希望摇晃持续的秒数。
那子弹打到东西后怎么晃动呢?您可以将代码添加到开始摇动的项目符号中。这可以在子弹的碰撞中完成。使用这样的东西:
public class BulletScript : MonoBehaviour {
void OnCollisionEnter2D(Collision2D coll) {
GameObject.Find("Main Camera").GetComponent<CameraShake>().shake = 0.25f;
}
}
为此,您需要子弹和计数器部分具有 2D 碰撞体。
PS。 Find
操作确实很慢,因此您可能希望通过在一个场景中将指向 CameraShake 的指针设置为静态变量一次来优化代码。
这里找到了一个抖动相机的代码:https://gist.github.com/ftvs/5822103
但如果我只想在子弹击中某物时摇动相机,如何使用它?
在您发布的 link 中有:
// How long the object should shake for.
public float shake = 0f;
如果shake
变量设置为例如1,只要它大于1,相机就会抖动。该代码正在减小该值,以便您设置的数字等于您希望摇晃持续的秒数。
那子弹打到东西后怎么晃动呢?您可以将代码添加到开始摇动的项目符号中。这可以在子弹的碰撞中完成。使用这样的东西:
public class BulletScript : MonoBehaviour {
void OnCollisionEnter2D(Collision2D coll) {
GameObject.Find("Main Camera").GetComponent<CameraShake>().shake = 0.25f;
}
}
为此,您需要子弹和计数器部分具有 2D 碰撞体。
PS。 Find
操作确实很慢,因此您可能希望通过在一个场景中将指向 CameraShake 的指针设置为静态变量一次来优化代码。