void FixedUpdate() { if (currentPhysicsScene.IsValid()) { if (!hasCopied) { copyAllObstacles(); hasCopied = true; } currentPhysicsScene.Simulate(Time.fixedDeltaTime); } }
public void predict(GameObject subject, Vector3 currentPosition, Vector2 launchVelocity) { if (currentPhysicsScene.IsValid() && predictionPhysicsScene.IsValid()) { if (dummy == null) { dummy = Instantiate(subject); SceneManager.MoveGameObjectToScene(dummy, predictionScene); } dummy.transform.position = currentPosition; dummy.GetComponent<Rigidbody2D>().velocity = launchVelocity; //lineRenderer.positionCount = 0; //lineRenderer.positionCount = maxIterations; for (int i = 0; i < maxIterations; i++){ predictionPhysicsScene.Simulate(Time.fixedDeltaTime); if (i % divider == 0){ dots[i/divider].transform.position = dummy.transform.position; } //lineRenderer.SetPosition(i, dummy.transform.position); } Destroy(dummy); } }
private void Start() { if (IsServer) { physicsScene = gameObject.scene.GetPhysicsScene(); simulatePhysicsScene = physicsScene.IsValid() && physicsScene != Physics.defaultPhysicsScene; physicsScene2D = gameObject.scene.GetPhysicsScene2D(); simulatePhysicsScene2D = physicsScene2D.IsValid() && physicsScene2D != Physics2D.defaultPhysicsScene; } else { enabled = false; } }
void Awake() { if (NetworkServer.active) { physicsScene = gameObject.scene.GetPhysicsScene(); simulatePhysicsScene = physicsScene.IsValid() && physicsScene != Physics.defaultPhysicsScene; physicsScene2D = gameObject.scene.GetPhysicsScene2D(); simulatePhysicsScene2D = physicsScene2D.IsValid() && physicsScene2D != Physics2D.defaultPhysicsScene; } else { enabled = false; } }
protected virtual void OnPhysics2D(PhysicsScene2D physicsScene) { if (!physicsScene.IsValid()) { return; // do nothing if the physics Scene is not valid. } _physicsTimer += Time.deltaTime; // Catch up with the game time. // Advance the physics simulation in portions of Time.fixedDeltaTime // Note that generally, we don't want to pass variable delta to Simulate as that leads to unstable results. while (_physicsTimer >= Time.fixedDeltaTime) { _physicsTimer -= Time.fixedDeltaTime; physicsScene.Simulate(Time.fixedDeltaTime); } // Here you can access the transforms state right after the simulation, if needed... }