gpt4 book ai didi

c# - 不要用 Time.timescale 暂停/影响粒子

转载 作者:行者123 更新时间:2023-12-05 04:08:32 26 4
gpt4 key购买 nike

我有一个脚本,在 CollisionEnter2D 上,粒子从一个对象发射,游戏暂停。粒子也停止了。但我不想暂停粒子。我希望他们即使在比赛暂停时也能继续比赛。我该怎么做?

这是一个脚本:

using UnityEngine;

public class MovingPlayer : MonoBehaviour
{

public float playerSpeed;
public float maxPos = 2.7f;

Vector3 position;
public uiManager ui;

Rigidbody2D rb;

public GameObject particleSystemPrefab;

void Awake ()
{
rb = GetComponent<Rigidbody2D>();
}

// Use this for initialization
void Start ()
{
position = transform.position;
}

......

void OnCollisionEnter2D (Collision2D col)
{
if (col.gameObject.tag == "CubeObstacle") {
foreach(ContactPoint2D contact in col.contacts)
{
Instantiate(particleSystemPrefab, contact.point, Quaternion.identity);
}
Time.timeScale = 0;
ui.gameOverActivated();
am.playerSound.Stop();
PlayerPrefs.SetInt("score", score);
PlayerPrefs.Save();
}
}
}

最佳答案

在过去,ParticleSystem.Simulate 用于更新函数,但这很昂贵。它减慢了许多游戏的速度。

Unity 2017.1 开始,新属性 ParticleSystem.MainModule.useUnscaledTime添加是为了解决此问题,以便将 Time.timescale 设置为 0 不会影响粒子(如果这是您喜欢的行为)。

简单示例:

ParticleSystem m_System = GetComponent<ParticleSystem>();
ParticleSystem.MainModule main = m_System.main;

//Use Unscaled Time
main.useUnscaledTime = true;

如果您不想通过代码更改它,而是通过编辑器更改它,则可以使用 Delta Time 下拉选项。将其从缩放更改为未缩放:

enter image description here


对于您的特定问题,请将您的 OnCollisionEnter2D 函数更改为以下内容:

void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "CubeObstacle")
{
foreach (ContactPoint2D contact in col.contacts)
{

GameObject obj = Instantiate(particleSystemPrefab, contact.point, Quaternion.identity);
ParticleSystem m_System = obj.GetComponent<ParticleSystem>();
ParticleSystem.MainModule main = m_System.main;
//Use Unscaled Time
main.useUnscaledTime = true;

}
Time.timeScale = 0;
ui.gameOverActivated();
am.playerSound.Stop();
PlayerPrefs.SetInt("score", score);
PlayerPrefs.Save();
}
}

关于c# - 不要用 Time.timescale 暂停/影响粒子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47380738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com