2017-10-27 9 views
0

이 질문을 온라인에서 물어 보았습니다. 그러나 해결책은 스크립트에서 입력하지 않았습니다. 이것이 내가 알아 내려는 것입니다. 4 초마다 개체를 인스턴스화하면 잘 작동합니다. 하지만 내가 만들었던 프리 팹은 게임에서 더 커졌습니다. 이상한 점은 씬 뷰 (게임이 진행되는 동안)에서 프리 팹이 올바른 크기라는 것입니다. 이상한 점은 확대 된 버전이 원래 스프라이트 스케일의 버전이라는 것입니다. 하지만 다른 많은 스크립트에서 올바르게 인스턴스화 된 편집 된 비늘이있는 다른 프리 팹이 있습니다. 그래서 제가하려고하는 것은 스크립트가 로컬 스케일에서이 프리 패브레이션을 인스턴스화하도록하는 것입니다. 왜냐하면 나는 그것이 세계 규모의 문제 일 수 있다고 읽었 기 때문입니다. 내 질문은, 어떻게 그것을 타이핑합니까? 나는 시도해 보았다. (적, transform.position * transform.localScale.x, transform.rotation * transform.localScale.y); 하지만 분명히 잘 안 :/프리 스케일이 잘못된 스케일로 인스턴스화합니다 (단위 2d)

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class enemySpawnerBasic : MonoBehaviour { 

public GameObject enemy; 
public Transform enemys; 
public float spawnTimer = 0f; 
public float spawnDelay = 4f; 
private bool spawned; 

void Update() 
{ 
    SpawnEnemy(); 
    spawnTimer -= Time.deltaTime; 
} 

void SpawnEnemy() 
{ 
    if (!spawned && spawnTimer <= 0) { 

     Instantiate (enemy, transform.position, transform.rotation); 
     spawnTimer = spawnDelay; 

    } 
} 
} 
+1

은 조립식에 정확한 척도입니까? 스프라이트 가져 오기 설정에서 단위당 픽셀 수는 얼마입니까? 단위당 픽셀은 –

+0

입니다. 프리 패브의 배율은 x 및 y 배율에서 .5입니다. 조립식은 정확합니다. 기본 1 x 1 눈금 대신 .5로 크기가 조정됩니다 –

+0

아마도 인스턴스화 된 적의 부모가 눈금의 두 배입니까? 일부 관련 스크린 샷은이 문제를 해결하는 데 도움이 될 수 있습니다. –

답변

0

instantiateInWorldSpace

패스 사실 오브젝트의 월드 위치를 유지하기 위해 부모 개체를 할당, 대신에 그 위치를 설정할 때 새로운 부모. false를 건네 주어, 새로운 부모를 기준으로 한 object의 위치를 ​​설정합니다.

워드 프로세서는 명확하지 않지만,이 같은 부울 회전 및 규모뿐만 아니라 위치에 적용됩니다. 원하는 행동을 취하려면 false을 전달해야한다고 생각합니다.

SetParent(...)에있는이 매개 변수는 RectTransforms이 작동하고 예상되는 동작으로 인해 새 UI에 추가되었습니다. DMGregory는 GameDev SE에서 an answer about this 이상있었습니다.