Может быть это поможет!
//file ExtensionsHandy.cs
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public static class ExtensionsHandy
{
public static float OrthoScreenWidth(this Camera c)
{
return
c.ViewportToWorldPoint(new Vector3(1,1,10)).x
- c.ViewportToWorldPoint(new Vector3(0,1,10)).x;
}
public static float OrthoScreenHeight(this Camera c)
{
return
c.ViewportToWorldPoint(new Vector3(0,1,10)).y
- c.ViewportToWorldPoint(new Vector3(0,0,10)).y;
}
}
попробовать, как этот
void Start()
{
float w = Camera.main.OrthoScreenWidth();
Debug.Log("w is " +w.ToString("f4");
}
Примечание. Если вы не знакомы с «расширениями»: quick tutorial.
Здесь вы найдете более удобные расширения.
На самом деле это Переместить объект на экран точек!
Например,
transform.ScreenRight();
transform.ScreenTop();
объект, теперь в верхнем правом углу экрана !!!
И считают это ......
void Update()
{
transform.ScreenRight();
}
В этом примере: даже если пользователь изменяет ориентацию устройства, даже если пользователь изменяет размер экрана (Mac или Windows), объект ВСЕГДА находится в правой части экрана!
public static Vector3 WP(this Camera c, float x, float y, float z)
{
return c.ViewportToWorldPoint(new Vector3(x,y,z));
}
public static void ScreenLeft(this GameObject moveme)
{
Vector3 rr = moveme.transform.position;
Vector3 leftTop = Camera.main.WP(0f,1f,0f);
float leftX = leftTop.x;
rr.x = leftX;
moveme.transform.position = rr;
}
public static void ScreenRight(this GameObject moveme)
{
Vector3 rr = moveme.transform.position;
Vector3 rightTop = Camera.main.WP(1f,1f,0f);
float rightX = rightTop.x;
rr.x = rightX;
moveme.transform.position = rr;
}
public static void ScreenBottom(this GameObject moveme)
{
Vector3 rr = moveme.transform.position;
Vector3 bottomLeft = Camera.main.WP(0f,0f,0f);
float bottomY = bottomLeft.y;
rr.y = bottomY;
moveme.transform.position = rr;
}
public static void ScreenTop(this GameObject moveme)
{
Vector3 rr = moveme.transform.position;
Vector3 topLeft = Camera.main.WP(0f,1f,0f);
float topY = topLeft.y;
rr.y = topY;
moveme.transform.position = rr;
}
Надеется, что это помогает .....
Моего английский не является хорошим .so я цветовой атлас Описан проблема лучше! –
Привет. ваша камера. это орфографический? – Fattie
Да! 2D игра Я использовал ортографическую камеру. Основная камера - только камера в моей игре. –