Пятница, 29 Марта 2024, 16:40

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Определение id объекта в определённой области другого.
Определение id объекта в определённой области другого.
ИнтернетДата: Пятница, 30 Июня 2017, 22:53 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Есть два объекта: круг, квадрат.
Мне нужно, чтобы определялся id квадрата пока в нём находится круг, при этом круг может двигаться как направо так и налево.
Пробовал двумя способами.
Код
//'В круге'// if place_messing(x,y,o_kwadr){id_n=instance_nearest(x,y,o_kwadr)}

Но при этом id не определяется, если круг вышел из квадрата, как показано на рисунке.

И ещё способ.
Код
//'В круге'//  
for(m=0;m<48;m++){
if collision_rectangle(x+m,y-m,x-m,y+m,o_kwadr,0,0){
id_n=instance_nearest(x,y,o_kwadr)}}

Получается то же самое.
Как добиться того чтобы id определялся до последнего пикселя. Какие ещё есть способы получить id.
Ещё можно collision_circle, но спрайт может быть не правильной формы, при этом не больше квадрата.
p.s спрайт квадрата 92/92


Сообщение отредактировал Интернет - Пятница, 30 Июня 2017, 22:59
LunarPixelДата: Суббота, 01 Июля 2017, 09:27 | Сообщение # 2
старожил
Сейчас нет на сайте
Интернет, зависит от того, зачем именно это нужно. Можно реализовать просто через событие столкновения. Т.е. у квадрата, в событии столкновения с кругом, пишешь id_n=id. Ну или у круга в событии столкновения с квадратом пишешь id_n=other.id.

vampir0305Дата: Суббота, 01 Июля 2017, 10:42 | Сообщение # 3
Unity C# Programmer
Сейчас нет на сайте
Попробуй использовать instance_place

Красочная сюжетно-ориентированная игра-головоломка
ИнтернетДата: Суббота, 01 Июля 2017, 10:45 | Сообщение # 4
постоянный участник
Сейчас нет на сайте

Скорее всего я не очень корректно задал вопрос.
Вот в таком случае, как на рисунке, переменная должна принимать значение id экземпляров с которыми столкнулся круг, в данном случае с 1 и 2, а получается так, что пока столкновение с прошлым не завершено переменная не меняется.
Вот кусок кода.
В Create круга
Код
id_setka=instance_nearest(x,y,setka_1)

В Step круга
Код
with(o_control){
for(ix=x_n;ix<dlina_setki;ix+=96){
for(iy=y_n;iy<600;iy+=145){
with(other){
if place_meeting(x,y,id_setka){
x_ob=id_setka.x
y_ob=id_setka.y
other.index_sosd[x_ob,y_ob]=name
other.sanet[x_ob,y_ob]=1
}
else{
id_setka=instance_position(x,y,setka_1)
other.index_sosd[x_ob,y_ob]=''
other.sanet[x_ob,y_ob]=0}
}}
}}

Скорее всего id нужно записывать в массив, но в какой.


Сообщение отредактировал Интернет - Суббота, 01 Июля 2017, 11:00
OpenGOOДата: Суббота, 01 Июля 2017, 13:38 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
В Step круга

Код
for (var i = 0; i < instance_number(obj_name); ++i)
{
    var inst = instance_find(obj_name, i);
    if (place_meeting(x, y, inst))
    {
        // perform an action
    }
}


Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
ИнтернетДата: Суббота, 01 Июля 2017, 13:53 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Спасибо. Заработало.

Сообщение отредактировал Интернет - Суббота, 01 Июля 2017, 14:16
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Определение id объекта в определённой области другого.
  • Страница 1 из 1
  • 1
Поиск:

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