我想编写一个应用程序:
我听说有人会说“团结”(2D?3D?)就可以做到这一点。 然后我看到有一个能够考虑触摸屏设备的SDL_2包。
- >你们有些人请告诉我这件事吗?哪种开发系统可能最适合我正在寻找的东西?您认为哪种语言最适合?我正在寻找的系统在处理图像时必须非常快,以便产生“流动”行为。
对于这个初学者的问题感到抱歉,但是现在对我来说,为了弄清楚如何实现它将是一项非常艰苦的工作,至少我想从最好的起点开始。
非常感谢,我真的很期待对此有任何建议。
最诚挚的问候,
P.cordo
答案 0 :(得分:0)
仅仅为了逻辑,它似乎相当容易实现。将图像(PNG / JPG)显示为全屏尺寸,输入触地得分并找出像素坐标。一旦你有坐标设置这些像素的alpha值为0.在这种情况下,您可能希望使用大小因子导致删除单个像素在一般情况下甚至可能不可见。
对于叠加效果,您可以考虑使用Unity UI并为图像维护正确的Z顺序,并进行光线投射以选择图像以移除像素。
作为参考我也附上了一个脚本,请查看:
public class ImageUpdate : MonoBehaviour {
public Texture2D tex;
public int size = 25;
Color32[] texPix;
int width,height;
void Start()
{
//Initialising image components
GetComponent<RawImage> ().texture = tex;
width = tex.width;
height = tex.height;
texPix = tex.GetPixels32 ();
tex = new Texture2D (width, height, TextureFormat.ARGB32,false);
tex.SetPixels32 (texPix);
}
void Update()
{
//Update this to touch for mobile devices
if (Input.GetMouseButton (0)) {
Vector2 pixelPos = Input.mousePosition;
//Removing the touched pixels
for(int i=-size;i<size;i++)
for(int j=-size;j<size;j++)
tex.SetPixel ((int)Mathf.Clamp(i + pixelPos.x,0,width), (int)Mathf.Clamp(j + (int)pixelPos.y,0,height), new Color (0, 0, 0, 0));
UpdateImage ();
}
}
void UpdateImage()
{
//tex = new Texture2D (width, height, TextureFormat.ARGB32,false);
//tex.SetPixels32 (texPix);
//Applying the updates
tex.Apply ();
GetComponent<RawImage> ().texture = tex;
}
}
现在您唯一需要记住的是将图像分辨率映射到屏幕分辨率。如果图像与屏幕分辨率不同,那么您可以使用偏移值来调整间隙。