danilaxxl danilaxxl

CollectableItemData.cs

[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]

GoloGames GoloGames

vadya_ivan, рад, что вам игра показалась интересной : )

P.S. Кстати уже доступна бесплатная демо-версия в Steam

vadya_ivan vadya_ivan

Визуал, задумка, музыка , механики, все в цель

GoloGames GoloGames

Ato_Ome, спасибо за позитивные эмоции, будем стараться : )

Ato_Ome Ato_Ome

Потрясающий результат, все так четенько, плавненько)
То ли саунд, то ли плавность напомнили мне игрушку World of Goo, удачи вам в разработке и сил побольше дойти до релиза!)

Cute Fox Cute Fox

Graphics are a little cool, good HD content. But this game doesn't cause nary interest me.
However the game is well done.

GMSD3D GMSD3D

Почему действие после всех условий выполняется?
[step another object]

Zemlaynin Zemlaynin

Jusper, Везде, но наугад строить смысла нет. Нужно разведать сперва территорию на наличие ресурсов.

Jusper Jusper

Zemlaynin, а карьеры можно будет везде запихать?
Или под них "особые" зоны будут?

Zemlaynin Zemlaynin

Это так скажем тестовое строительство, а так да у города будет зона влияния которую нужно будет расширять.

Jusper Jusper

А ссылка есть?

Jusper Jusper

Я не оч понял из скриншота, как вообще работает стройка. У игрока будет как бы поле строительства?

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

split97 split97

в игру нужно добавить время песочные часы в инвентаре, пока бегаешь наберается усталость и ты очень тормозной мобильный враг просто убевает

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

Логотип проекта Unity

Чтение координат дочерних объектов.

Здравствуйте. Прошу помощи.
Тут 2D проект без использования физики (Тетрис). Суть в том что когда мой объект приближается к определённым точкам, то он должен это чувствовать, все эти точки для удобства я привязал к пустому объекту. И теперь, при движении объекта, хочу проверять нет ли их поблизости. В руководстве нашёл эту статью - параграф "Нахождение дочерних объектов": http://docs.unity3d.com/ru/current/Manual/ControllingGameObje...
Как я понимаю тут циклом трансформ каждого дочернего объекта записывается в массив? Я решил в том же цикле проверять не находятся ли данные точки под "ногами" у моего объекта.


    public bool bottom; 

	void FixedUpdate () 
	{
		All_Dead_Space = new Transform[transform.childCount];
		int i = 0;

		foreach (Transform t in transform)
		{
			All_Dead_Space[i++] = t;  //Переписал в массив координаты мёртвых точек
			
			if ((All_Dead_Space[i].transform.position.x == transform.position.x)
		    && (All_Dead_Space[i].transform.position.y == transform.position.y-1.0F))
			{
				bottom = true;  //Если под кубом мёртвое пространство то дно рядом
			}
			
		}
     
	}

Но, при приближении объекта к точке, bottom всё равно остаётся false. Может что понял не так?

Помогите пожалуйста. И извините, если что не так, я стараюсь.

Ответ

Mangysta, думаю проблема в том, что вы неверно достаете deadspace
В поле deadSpaceRoot запишите свой "корневой объект" с мертвыми точками.

public bool bottom;
public Transform deadSpaceRoot; //Сюда перетащить/записать объект с "мертвыми точками".
void FixedUpdate()
{
    if (deadSpaceRoot == null)
    {
        Debug.Log("DeadSpaceRoot == null");
        return;
    }
    var deadSpacePoints = new Vector3[deadSpaceRoot.childCount];
    for (int j = 0; j < deadSpaceRoot.childCount; j++)
        deadSpacePoints[j] = deadSpaceRoot.GetChild(j).transform.position;
    //Все "мертвые точки" теперь в массиве deadSpacePoints

    foreach (var deadSpacePoint in deadSpacePoints)
    {
        //Так как тип float неточный, используем функцию приблизительного сравнения значений
        if (Mathf.Approximately(deadSpacePoint.x, transform.position.x) &&
            Mathf.Approximately(deadSpacePoint.y, transform.position.y - 1))
        {
            bottom = true;
            break; //Прерываем цикл
        }
    }
}

Смотрите также:


Комментарии



Не особо понял суть вопроса. У тебя объект должен двигаться строго определенными шагами? Или что?
Что ты подразумеваешь под понятием

должен это чувствовать

alexprey:

Не особо понял суть вопроса. У тебя объект должен двигаться строго определенными шагами? Или что?
Что ты подразумеваешь под понятием

должен это чувствовать

Кубы двигаются в четырёх направлениях шагом в координату и при приближении вплотную к запрётным зонам - проверка если на Х+1 или У+1 больше нельзя двигаться (например там стена стакана или другая фигура) куб должен будет поменять переменную на true. Поставить флажок. Скрипт управления фигуры потом читает эти флажки и блокирует движение в определённую сторону. Такая задумка.
Пока пытаюсь добиться чтобы куб упирался в дно. Если у куба координата У 10 например а у запретной точки 11 а Х совпадает то под ним донышко - bottom = true. )
Наставил этих точек на границах стакана и позже при падении фигуры все кубы тоже должны будут переименовываться в dead_space так они тоже будут учитываться новой фигурой.

Mangysta, думаю проблема в том, что вы неверно достаете deadspace
В поле deadSpaceRoot запишите свой "корневой объект" с мертвыми точками.

public bool bottom;
public Transform deadSpaceRoot; //Сюда перетащить/записать объект с "мертвыми точками".
void FixedUpdate()
{
    if (deadSpaceRoot == null)
    {
        Debug.Log("DeadSpaceRoot == null");
        return;
    }
    var deadSpacePoints = new Vector3[deadSpaceRoot.childCount];
    for (int j = 0; j < deadSpaceRoot.childCount; j++)
        deadSpacePoints[j] = deadSpaceRoot.GetChild(j).transform.position;
    //Все "мертвые точки" теперь в массиве deadSpacePoints

    foreach (var deadSpacePoint in deadSpacePoints)
    {
        //Так как тип float неточный, используем функцию приблизительного сравнения значений
        if (Mathf.Approximately(deadSpacePoint.x, transform.position.x) &&
            Mathf.Approximately(deadSpacePoint.y, transform.position.y - 1))
        {
            bottom = true;
            break; //Прерываем цикл
        }
    }
}

Devion, вы правы, так намного лучше :) Большое спасибо, вы настоящий волшебник.

Возможность добавлять комментарии была ограничена