Windows Phone 7 용 XNA로 게임을하기로 결심했으며, 첫 번째 게임에서는 이미지를 찍어 사각형 스프라이트로 분할해야하므로 이미지는 기본적으로 스프라이트 시트가됩니다. 원본 이미지는 화면 크기가 너무 크거나 작을 수 있으므로 화면에 맞도록 간격을 적용하는 방법을 알아 보려면 다음을 수행했지만 간격이 표시되지 않도록해야합니다 (한 차원이 화면).XNA에서 스프라이트 시트를 어떻게 스케일합니까?
Texture = content.Load<Texture2D>(assetName);
var width = Texture.Bounds.Width;
var height = Texture.Bounds.Height;
var widthDifference = width - screenWidth;
var heightDifference = height - screenHeight;
if (widthDifference < 0 || heightDifference < 0)
{
if (widthDifference < heightDifference)
Scale = (float) screenWidth/width;
else
Scale = (float) screenHeight/height;
}
else
{
if (widthDifference > heightDifference)
Scale = (float) screenWidth/width;
else
Scale = (float) screenHeight/height;
}
if (Scale < 0)
Scale = Scale*-1;
그러나 다음으로 그리드에서 화면을 깔끔하게 채울이 이미지에서 스프라이트를 생성해야합니다. 내 주요 질문은 각 스프라이트에서 내 draw 메소드를 호출 할 때 원래 스프라이트 시트에 스케일링이 적용되는지 아니면 스프라이트 시트에서 텍스처를 가져온 후에 스프라이트 자체에만 적용되는지 여부입니다.
후자 인 경우 개별 스프라이트를 만들기 전에 스프라이트 시트의 크기를 가장 잘 조절하는 방법에 대해 약간 혼란 스럽습니다. 실제로 이미지를 크기를 정확하게 조정하여 화면 크기와 정확하게 일치하도록 만들면 삶이 편해지지만 약간은 무거워 보입니다.
모든 의견을 환영합니다.
스프라이트 시트는 사진이며 화면보다 작을 수 있습니다.이 경우 화면 비율을 유지하면서 화면 비율을 유지하거나 화면을 채울 때 크기가 커지거나 커질 수 있습니다. 하위. 어떤 방법 으로든 이미지가 화면을 채 웁니다 (한 치수가 화면 너비 또는 높이보다 큰지 여부는 중요하지 않음). 스프라이트 자체는 화면 치수를 (스프라이트 시트가 아닌) 분할하는 것으로 받아쓰기가 필요합니다.하지만 제안이나 소스 및 대상 사각형이 마음에 들었습니다. 나는 그걸 가지고 놀 수 있습니다. –
크기가 조정 된 스프라이트 시트 이미지로 새로운 텍스처를 만들 것을 제안합니다. WP7이 다른 렌더 타겟에 렌더링 할 수 있다고 가정합니다. 그런 다음, 직사각형에 스케일을 적용 할 필요가 없습니다 (위치에 대해 걱정할 필요가 있습니다). –
원본 이미지를 가져 와서 자르고 자르면 메모리에 저장되어 실제로 저장되지 않은 텍스처로 복사 할 수 있습니까? 나는 그것이 실제로 달성하려고 노력하는 것보다 실제로 훨씬 쉬울 것이라고 생각합니다! –