unity3D中想要实现——人物沿着Y轴旋转时,开启屏幕烟花特效,烟花特效持续4秒钟。
以下是一个简单的示例脚本:
using UnityEngine;
public class RotateAndPlayEffect : MonoBehaviour
{
public ParticleSystem effect; // 特效
public float duration = 4.0f; // 持续时间
private bool isRotating = false; // 是否正在旋转
void Update()
{
// 检测是否按下左右方向键
float rotation = Input.GetAxis("Horizontal");
if (rotation != 0)
{
// 开始旋转
isRotating = true;
transform.Rotate(Vector3.up, rotation * Time.deltaTime * 50.0f);
}
else
{
// 停止旋转
isRotating = false;
}
// 检测是否需要播放特效
if (isRotating && !effect.isPlaying)
{
effect.Play();
Invoke("StopEffect", duration);
}
}
void StopEffect()
{
effect.Stop();
}
}
这个脚本绑定在人物模型的GameObject上,需要在Inspector面板上指定特效和持续时间的参数。脚本的作用是,当用户按下左右方向键旋转人物时,检测是否正在旋转,如果是,则播放特效并设置一个定时器,在持续时间到达之后停止特效。
需要注意的是,这个示例使用了Invoke方法来实现持续时间的定时器,因为在Update方法中使用Time.deltaTime计算时间可能会有误差。如果需要更精确的计时器,可以使用Coroutine协程来实现。