首页 > 解决方案 > 当播放器层在背景层之后时背景重叠播放器

问题描述

我正在统一创建一个 2D 平台游戏,这是我的所有代码:

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

public class PlayerMovement : MonoBehaviour
{
    public float speed = 0.5f;
    public float gravity;

    private float x;
    private float y;

    private bool isLeft = false;
    private bool isRight = false;
    private bool isUp = false;
    private bool isDown = false;

    public SpriteRenderer sp;
    public Sprite player_Right;
    public Sprite player_Left;

    void Start()
    {
        Debug.Log(Screen.width + "," + Screen.height);
    }

    // Update is called once per frame
    void Update()
    {
        x = transform.position.x;
        y = transform.position.y;

        if (Input.GetKeyDown("right"))
        {
            isRight = true;
        }
        if (Input.GetKeyDown("left"))
        {
            isLeft = true;
        }
        if (Input.GetKeyDown("up"))
        {
            isUp = true;
        }
        if (Input.GetKeyDown("down"))
        {
            isDown = true;
        }

        if (Input.GetKeyUp("right"))
        {
            isRight = false;
        }
        if (Input.GetKeyUp("left"))
        {
            isLeft = false;
        }
        if (Input.GetKeyUp("up"))
        {
            isUp = false;
        }
        if (Input.GetKeyUp("down"))
        {
            isDown = false;
        }

        if (isRight)
        {
            x += speed * Time.deltaTime;
            sp.sprite = player_Right;
        }
        if (isLeft)
        {
            x -= speed * Time.deltaTime;
            sp.sprite = player_Left;
        }
        if (isDown)
        {
            y -= speed * Time.deltaTime;
        }
        if (isUp)
        {
            y += speed * Time.deltaTime;
        }


        transform.position = new Vector2(x, y);
    }
}

这是我的编辑图层屏幕:

编辑图层

背景图像附加到背景层,播放器附加到播放器层,所以播放器应该始终绘制在背景之上,对吗?好吧,我是这么想的,当我向左走时按播放键,播放器就会消失在背景下。为什么会发生这种情况,我该如何解决?如果您需要查看编辑器的某些部分,请不要犹豫。

编辑:出于某种原因,标签会自动从统一 2d 切换到统一 3d

标签: unity3d

解决方案


相信很多人在尝试制作2D游戏的时候都会遇到这个问题,但是 的功能layer并不是为了那个目的,这里有两个玩家在背景之上的解决方案:

  1. 根据您的相机位置,您可以将播放器的位置设置为比背景图像的位置更靠近相机,例如相机位置为(0, 0, 10),然后您将播放器的位置设置为(0, 0, 1),背景图像的位置设置为(0, 0, 0)

  2. 在Sprite Renderer 组件中将玩家的Order In Layer参数设置为小于背景图像中的参数,因为编号较低的 Sprite 首先渲染,编号较高的 Sprite 与下面的重叠,例如对于播放器,对于背景图像01


推荐阅读