Воскресенье, 24 Ноября 2024, 00:37

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Размер экрана устройства
priesteviДата: Четверг, 13 Апреля 2017, 12:40 | Сообщение # 1
был не раз
Сейчас нет на сайте
всем привет, столкнулся с такой вот штукой, экраны ты разные у телефонов\планшетов поэтому и камера в 2д игре отображает по разному все, собственно теперь вопрос: у меня по внешним краям стоят игровые объекты призванные ограничить вылет npc за границы экрана, я решил каждый раз при старте сцены их выставлять скриптом ровно за границей экрана что бы казалось что объект отскакивает от краёв экрана, но почему то скрипт слишком далеко закидывает эти самые объекты хотя вроде в скрипте то я правильно рассуждаю насчет расчета положения объектов

вроде же вполне логично выставлять расстояние узнав общую высоту экрана разделить ее на 2 (что бы от центра двигать) и прибавить немного что бы за края ушло
а вот что выходит

может есть у кого мысли какие?


Сообщение отредактировал priestevi - Четверг, 13 Апреля 2017, 12:41
EchoITДата: Четверг, 13 Апреля 2017, 13:45 | Сообщение # 2
старожил
Сейчас нет на сайте
priestevi, вы сравниваете размеры экрана с игровыми единицами измерения, т.е. пиксель приравниваете к игровому метру. Понятное дело, что так выходит неправильно.

Попробуйте заменить присвоение ширины и высоты экрана на это.
Код

x = Camera.main.ScreenToViewportPoint(Screen.height).y; // Не знаю, почему у вас Screen.height в "x" присваивается, когда это измерение по Y. Поэтому я беру координату "y" здесь. сли не сработает, попробуйте поменять в конце "y" на "x".
y = Camera.main.ScreenToViewportPoint(Screen.width).x; // А тут "x". Если не сработает, попробуйте поменять в конце "x" на "y".


Сам не проверял, просто первое, что в голову пришло.


Долгожданный анонсик: State of War

Сообщение отредактировал EchoIT - Четверг, 13 Апреля 2017, 13:47
priesteviДата: Пятница, 14 Апреля 2017, 11:45 | Сообщение # 3
был не раз
Сейчас нет на сайте
кажется тут надо использовать ScreenToWorldPoint, как раз в описании сказано что это трансформ позиции точки на экране в мировые координаты

Добавлено (14 апреля 2017, 11:45)
---------------------------------------------
вот решение

Код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Walls : MonoBehaviour {

    public Camera cam;
    public GameObject WallTop;
    public GameObject WallBot;
    public GameObject WallLeft;
    public GameObject WallRight;
    Vector3 t = new Vector3();
    Vector3 b = new Vector3();
    Vector3 l = new Vector3();
    Vector3 r = new Vector3();

    void Start ()
    {
  t = cam.ScreenToWorldPoint (new Vector3 ((cam.pixelWidth / 2), cam.pixelHeight+4, 0));
  WallTop.transform.Translate (t);
  b = cam.ScreenToWorldPoint (new Vector3 ((cam.pixelWidth / 2), -4, 0));
  WallBot.transform.Translate (b);
  l = cam.ScreenToWorldPoint (new Vector3 (-4, (cam.pixelHeight / 2), 0));
  WallLeft.transform.Translate (l);
  r = cam.ScreenToWorldPoint (new Vector3 (cam.pixelWidth+4, (cam.pixelHeight / 2), 0));
  WallRight.transform.Translate (r);
    }
}

теперь ограничивающие гейм обджекты подстраиваются точнехонько под размеры экрана


Сообщение отредактировал priestevi - Пятница, 14 Апреля 2017, 08:17
EchoITДата: Пятница, 14 Апреля 2017, 11:52 | Сообщение # 4
старожил
Сейчас нет на сайте
Цитата
кажется тут надо использовать ScreenToWorldPoint

priestevi, верно, я перепутал. :D


Долгожданный анонсик: State of War

Сообщение отредактировал EchoIT - Пятница, 14 Апреля 2017, 11:53
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг