unity3d - 用于在 Unity 中设置限制时,相机不显示任何内容
问题描述
再会
我正在尝试使用我用来限制 2D 游戏中其他元素的功能来限制我的相机移动。当我使用我的相机调用这个函数时,它会做一些奇怪的事情。
由于某种原因,一旦我调用该函数,它就不会显示任何内容。我已经使用 Debug.log 测试了相机的位置,它似乎在完全相同的位置。约束似乎也有效,但如果没有显示,那就没用了。
我正在使用 Mathf.Clamp 函数来尝试约束地图。我知道有很多教程展示了如何限制地图移动,老实说,我的方法看起来很相似。
我想知道为什么这个功能会失败。我试图保持通用性,并且已经在使用此功能来限制其他游戏元素的移动。
我的代码如下所示:
int cameraSpeed = 10;
GameObject camera;
int maxX = 20;
int minX = -20;
int maxY = 20;
int minY = -20;
// Use this for initialization
public void constrain(GameObject obj)
{
Vector2 pos = obj.transform.position;
pos.x = Mathf.Clamp(pos.x, -maxX, maxX);
pos.y = Mathf.Clamp(pos.y, -maxY, maxY);
obj.transform.position = pos;
}
void Start () {
camera = GameObject.Find("Main Camera");
}
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.RightArrow))
{
camera.transform.Translate(new Vector2(cameraSpeed * Time.deltaTime, 0));
}
if (Input.GetKey(KeyCode.LeftArrow))
{
camera.transform.Translate(new Vector2(-cameraSpeed * Time.deltaTime, 0));
}
if (Input.GetKey(KeyCode.DownArrow))
{
camera.transform.Translate(new Vector2(0, -cameraSpeed * Time.deltaTime));
}
if (Input.GetKey(KeyCode.UpArrow))
{
camera.transform.Translate(new Vector2(0, cameraSpeed * Time.deltaTime));
}
Debug.Log(camera.transform.position.x);
Debug.Log(camera.transform.position.y);
constrain(camera);
}
我是 Unity 的新手,正在尝试彻底理解它。任何建议都会被大大采纳。
解决方案
相机的 Z 位置设置为 0。所有其他对象都具有相同的 Z 位置,因此相机不会渲染它们。
将约束()更改为:
public float zPos = -10
public void constrain(GameObject obj)
{
Vector3 pos = obj.transform.position;
pos.x = Mathf.Clamp(pos.x, -maxX, maxX);
pos.y = Mathf.Clamp(pos.y, -maxY, maxY);
pos.z = zPos
obj.transform.position = pos;
}
那应该解决它。
编辑:发生这种情况的原因是因为您使用 Vector2 作为相机位置。在 Unity 中,Vector2 是 z 值为 0 的 Vector3。
推荐阅读
- android - 更改现有 android keystore 证书的有效期
- r - 如何修复循环以从 R 中的 DNAStringSet 写入多个 FASTA 文件?
- angular - 角度通用:社交共享页面项目
- html - Blazor 服务器:尝试将呈现的页面转换为 html 字符串以创建 pdf
- ios - 如何在没有 Apple Developer Account 的情况下在 iPhone 上部署 Flutter 应用程序?
- angular - RxJs 每 x 秒处理一次第一个事件
- docker - Docker 构建:无法为 openjdk 获取 oauth 令牌?
- python - Python范围打印两次
- google-sheets - 谷歌表格出勤跟踪公式
- r - 有没有办法显示合并的进度