Всем привет. Я хотел показать Вам, как создать объект, который автоматически меняет угол поворота и свою длину и тянется к курсору.
Необходимо выполнить следующие действия:
1. Создайте спрайт и назовите его (я назвал свой "о"). Покрасьте его зеленым (Можно и не зеленым)
2. Добавьте в проект объект типа Mouse.
3. Хорошо. Давайте начнем писать код.
Перейдите во вкладку EventSheet и создайте 4 глобальных переменных типа number (число): "a", "b", "c" "ang", которые будут означать стороны треугольника и угол соответственно."c" зависит от положения мыши по оси X, "b" — соответственно по оси Y-axis, "a" является гипотенузой треугольника, а "ang", как Вы могли догадаться, является углом в этом треугольнике.
4.Создайте эвент System -> Every tick и добавьте следующие действия (System -> Set value):
a = sqrt ((o.x-mouse.x) ^ 2 + (o.y-mouse.y) ^ 2)
b = sqrt ((o.y-mouse.y) ^ 2)
c = sqrt ((o.x-mouse.x) ^ 2)
также установим длину нашего спрайта:
o.set size = (sqrt (b ^ 2 + c ^ 2) -10, 5)
Высота "o" в нашем случае равна 5.
5. добавьте следующие команды:
System -> Compare Two Values: mouse.y> = o.y
System -> Compare Two Values: mouse.x> = o.x
У этих эвентов добавьте следующее действие:
ang = (asin (b / (a)))
Добавим еще немного команд:
System -> Compare Two Values: mouse.y <= o.y
System -> Compare Two Values: mouse.x> = o.x
Действия:
ang = 360- (asin (b / (a)))
Еще эвенты:
System -> Compare Two Values: mouse.y <= o.y
System -> Compare Two Values: mouse.x <= o.x
У них действия:
ang = -180+ (asin (b / (a)))
И наконец:
System -> Compare Two Values: mouse.y> = o.y
System -> Compare Two Values: mouse.x <= o.x
И соответственно действие: ang = -180- (asin (b / (a)))
Что ж, это всё, что я хотел Вам показать. Результат должен выглядеть как на изображении:
Код должен выглядеть так:
Спасибо всем!