Unity3d 我如何绕过时间刻度
我的播放器附带了一个脚本,其中包含Unity3d 我如何绕过时间刻度,unity3d,2d,Unity3d,2d,我的播放器附带了一个脚本,其中包含IEnumerator OnTriggerExit2D。其中有一个time.time scale等于0,它使整个游戏在与标记对象碰撞后暂停。我将其设置为这样,以便我的播放器在碰撞后的特定时间停止(我使用了yield return new WaitForSeconds) 我的问题是,;有没有办法使我的播放器不受时间刻度的影响,但在发生碰撞后仍然停止,这样我的播放器在整个游戏暂停时仍然可以运行。这是我的剧本: public class Player : MonoB
IEnumerator OnTriggerExit2D
。其中有一个time.time scale
等于0,它使整个游戏在与标记对象碰撞后暂停。我将其设置为这样,以便我的播放器在碰撞后的特定时间停止(我使用了yield return new WaitForSeconds
)
我的问题是,;有没有办法使我的播放器不受时间刻度的影响,但在发生碰撞后仍然停止,这样我的播放器在整个游戏暂停时仍然可以运行。这是我的剧本:
public class Player : MonoBehaviour {
public float speed = 15f;
private Vector3 target;
public Player playerMovementRef;
void Start () {
target = transform.position;
}
void Update () {
if (Input.GetMouseButtonDown(0)) {
target = Camera.main.ScreenToWorldPoint(Input.mousePosition);
target.z = transform.position.z;
}
transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
}
IEnumerator OnTriggerExit2D (Collider2D other){
if (other.tag == "Bouncy object")
playerMovementRef.enabled = false;
yield return new WaitForSeconds (0.35f);
Time.timeScale = 0f;
playerMovementRef.enabled = true;
}
}
案例1
您可以从更新中删除Time.deltaTime。
即使将时间刻度设置为0,仍会调用Update。只有Time.deltaTime将为0,因此您的玩家不会移动
您可以使用一些常量值,而不是使用Time.deltaTime移动播放器。
虽然它不会与帧速率无关,但您可以让您的播放器移动
案例2
您可以禁用(GetComponent().enabled=false)除您的玩家之外的所有其他游戏对象的所有刚体,而不是将Time.timescale设置为0