繁体   English   中英

Unity-我可以制作2D镜子吗?

[英]Unity - Can I make a mirror in 2D?

我正在制作一个自上而下的基于tile的2D游戏。 在这个游戏中,我想将其中一堵墙做成镜子,就像在视频中看到的那样。 现在,我知道预告片中的游戏是使用RPG Maker制作的,但是我想使用Unity 3D制作游戏。

我试图在镜子旁边设置一个相机,在相机上添加一个RenderTexture并在Sprite上设置该纹理,但是当然不可能将RenderTexture转换为Sprite,因此最终无法正常工作。

所以我的问题是,是否可以在预告片中创建镜子?

有可能获得这种效果。 只需将第二台摄像机作为角色的父项,然后使其随角色一起移动。

可以将RenderTexture转换为Sprite 首先,转换RenderTextureTexture2D然后转换Texture2DSpriteSprite.Create功能。

最好禁用第二个或镜像相机,然后仅在需要时使用mirrorCam.Render()手动呈现它。 以下脚本可以帮助您入门。 将其附加到一个空的GameObject,然后从编辑器中分配镜像相机和目标SpriteRenderer ,它应将相机看到的内容镜像到SpriteRenderer 不要忘记将RenderTexture插入镜像相机。

public class CameraToSpriteMirror: MonoBehaviour
{
    public SpriteRenderer spriteToUpdate;
    public Camera mirrorCam;

    void Start()
    {
        StartCoroutine(waitForCam());
    }

    WaitForEndOfFrame endOfFrame = new WaitForEndOfFrame();

    IEnumerator waitForCam()
    {
        //Will run forever in this while loop
        while (true)
        {
            //Wait for end of frame
            yield return endOfFrame;

            //Get camera render texture
            RenderTexture rendText = RenderTexture.active;
            RenderTexture.active = mirrorCam.targetTexture;

            //Render that camera
            mirrorCam.Render();

            //Convert to Texture2D
            Texture2D text = renderTextureToTexture2D(mirrorCam.targetTexture);

            RenderTexture.active = rendText;

            //Convert to Sprite
            Sprite sprite = texture2DToSprite(text);

            //Apply to SpriteRenderer
            spriteToUpdate.sprite = sprite;

        }
    }

    Texture2D renderTextureToTexture2D(RenderTexture rTex)
    {
        Texture2D tex = new Texture2D(rTex.width, rTex.height, TextureFormat.RGB24, false);
        tex.ReadPixels(new Rect(0, 0, rTex.width, rTex.height), 0, 0);
        tex.Apply();
        return tex;
    }

    Sprite texture2DToSprite(Texture2D text2D)
    {
        Sprite sprite = Sprite.Create(text2D, new Rect(0, 0, text2D.width, text2D.height), Vector2.zero);
        return sprite;
    }
}

您可以按照旧的Super Mario 64方式进行操作,并将墙壁作为屏幕显示其他摄像机对另一个角色的透视。

据我所知,Unity非常擅长画中画(画中画),因此值得一试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM