unity3d - 当播放器层在背景层之后时背景重叠播放器
问题描述
我正在统一创建一个 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
解决方案
相信很多人在尝试制作2D游戏的时候都会遇到这个问题,但是 的功能layer
并不是为了那个目的,这里有两个玩家在背景之上的解决方案:
根据您的相机位置,您可以将播放器的位置设置为比背景图像的位置更靠近相机,例如相机位置为
(0, 0, 10)
,然后您将播放器的位置设置为(0, 0, 1)
,背景图像的位置设置为(0, 0, 0)
在Sprite Renderer 组件中将玩家的
Order In Layer
参数设置为小于背景图像中的参数,因为编号较低的 Sprite 首先渲染,编号较高的 Sprite 与下面的重叠,例如对于播放器,对于背景图像0
1
推荐阅读
- postgresql - 传递给用户定义函数 postgresql 的数据参数
- javascript - 如何取消 JavaScript 中的按钮单击事件?
- php - Gonative.io 应用程序不允许 cookie 更新
- ionic4 - 离子不在模拟器中工作但在浏览器中工作
- python - 无法在 Python 3 中导入模块
- c# - 我需要一些帮助来为我的 API 测试编写自定义断言方法
- php - 如何将 php 查询的所有结果保存到 .txt 文件中?
- firebase - 如何在 DrawerNavigator 中使用 firebase 并同步检索数据
- c# - AspNet Identity RequireClaim() - 如何使用 OR?
- java - 如何调试使用数据提供者的 testng 测试?