๋ฉ”์ธ์”ฌ๊ณผ ๋‹ค๋ฅธ ๋‹ค๋ฅธ ๋ฌผ๋ฆฌ ๊ณต๊ฐ„ย ๊ตฌ์ถ• ๊ฐ€๋Šฅ.


์‚ฌ์šฉ ๋ชฉ์ :

- ๋ฉ€ํ‹ฐ๊ฒŒ์ž„ ์„œ๋ฒ„์—์„œ ์—ฌ๋Ÿฌ ๊ฒฝ๊ธฐ ์‹œ๋ฎฌ๋ ˆ์ด์…˜.

- ๋ฉ”์ธ ์”ฌ์˜ ๋ฌผ๋ฆฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜(๊ถค๋„ ์˜ˆ์ธก ๋“ฑ).ย 


์ด๊ฑธ ์ฐพ๋А๋ƒ ๊ฐœ๊ณ ์ƒํ•จ ใ… ใ… 

์—ฌ๋Ÿฌ๋ถ„์€ ๊ณ ์ƒ ํ•˜์ง€ ๋งˆ์„ธ์š” =)

ใ…‡ใ……ใ…‡;;


*์œ ๋‹ˆํ‹ฐ ๋ฒ„์ „ 2023.2.12f1


using UnityEngine;

using UnityEngine.SceneManagement;


public class Script : MonoBehaviour

{

ย  ย  // ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•  ์”ฌ์˜ ์ด๋ฆ„

ย  ย  public string newSceneName = "NewScene";

ย  ย  private Scene physicsScene;


ย  ย  // ์ƒ์„ฑํ•  ํ”„๋ฆฌํŒน

ย  ย  public GameObject obj;


ย  ย  void Start()

ย  ย  {

ย  ย  ย  ย  // ์”ฌ ์ƒ์„ฑ

ย  ย  ย  ย  physicsScene = CreateNewScene(newSceneName);

ย  ย  }


ย  ย  private void Update()

ย  ย  {

ย  ย  ย  ย  if(Input.GetKeyDown(KeyCode.S)) {

ย  ย  ย  ย  ย  ย  //์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ

ย  ย  ย  ย  ย  ย  CreateObjectInScene(physicsScene);

ย  ย  ย  ย  }

ย  ย  }


ย  ย  Scene CreateNewScene(string sceneName)

ย  ย  {

ย  ย  ย  ย  // ์ƒˆ๋กœ์šด ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„(PhysicsScene)๊ณผ ํ•จ๊ป˜ ์”ฌ ์ƒ์„ฑ

ย  ย  ย  ย  CreateSceneParameters parameters = new CreateSceneParameters(LocalPhysicsMode.Physics2D);

ย  ย  ย  ย  Scene newScene = SceneManager.CreateScene(sceneName, parameters);


ย  ย  ย  ย  // ๋…๋ฆฝ์ ์ธ ๋ฌผ๋ฆฌ ๊ณต๊ฐ„์—์„œ ์‚ฌ์šฉํ•  ์˜ค๋ธŒ์ ํŠธ ์ƒ์„ฑ

ย  ย  ย  ย  CreateObjectInScene(newScene);


ย  ย  ย  ย  return newScene;

ย  ย  }


ย  ย  void CreateObjectInScene(Scene scene)

ย  ย  {


ย  ย  ย  ย  GameObject newObject = Instantiate(obj);



ย  ย  ย  ย  // ์˜ค๋ธŒ์ ํŠธ ์œ„์น˜ ์„ค์ •

ย  ย  ย  ย  newObject.transform.position = new Vector3(0, 10, 0);


ย  ย  ย  ย  // ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•œ ์”ฌ์— ์ถ”๊ฐ€

ย  ย  ย  ย  SceneManager.MoveGameObjectToScene(newObject, scene);

ย  ย  }


ย  ย  private void FixedUpdate()

ย  ย  {

ย  ย  ย  ย  // physicsScene2D์ด ์œ ํšจํ•œ์ง€ ํ™•์ธ

ย  ย  ย  ย  if (physicsScene.GetPhysicsScene2D().IsValid())

ย  ย  ย  ย  {

ย  ย  ย  ย  ย  ย  // ์ˆ˜๋™์œผ๋กœ ์‹คํ–‰ (*์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜์ง€ ์•Š์Œ*)

ย  ย  ย  ย  ย  ย  physicsScene.GetPhysicsScene2D().Simulate(Time.fixedDeltaTime);

ย  ย  ย  ย  }

ย  ย  }

}