Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Скроллинг фона с одной скоростью, относительно героя (http://www.flasher.ru/forum/showthread.php?t=212359)

scorp2007 23.01.2016 23:19

Скроллинг фона с одной скоростью, относительно героя
 
Всем привет, итак ситуация такова, имеется клип фона fonm, а также клип героя herom, я хочу скроллить фон относительно героя (таким образом создавая впечатления будто герой движется с помощь мыши), на данный момент у меня такой код:

Код AS3:

fonm.y += (mouseY - herom.y) * -mspeed;
fonm.x += (mouseX - herom.x) * -mspeed;

Он работает и фон скроллится относительно героя в нужном направлении, но чем дальше мышь от героя тем быстрее скроллится фон, а я хочу добиться чтоб фон скроллился с одной скоростью в независимости от того как далеко мышь от herom. Подскажите пожалуйста как такого добиться. Спасибо.

zCHESNOKz 23.01.2016 23:31

maxScrollSpeed ?

scorp2007 23.01.2016 23:36

Цитата:

Сообщение от zCHESNOKz (Сообщение 1191125)
maxScrollSpeed ?

набив поста или что это?

zCHESNOKz 23.01.2016 23:56

Цитата:

Сообщение от scorp2007 (Сообщение 1191126)
набив поста или что это?

набив чего? :) а что если просто ограничить максимальную скорость скролла

undefined 24.01.2016 00:02

приводи смещение к фиксированной длине:
Код AS3:

var v:Point = new Point((mouseX - herom.x) * -mspeed,(mouseY - herom.y) * -mspeed);
var target_v:Number=10;//желаемая скорость
var l:Number=v.length;
if (l>0) {
v.x=v.x/l*target_v;
v.y=v.y/l*target_v;
fonm.x += v.x;
fonm.y += v.y;
}


scorp2007 24.01.2016 00:04

Цитата:

Сообщение от zCHESNOKz (Сообщение 1191128)
набив чего? :) а что если просто ограничить максимальную скорость скролла

нужна именно фиксированная, потому что мешает не только слишком большая скорость при большом расстоянии но и слишком маленькая при близком...

Добавлено через 32 секунды
Цитата:

Сообщение от undefined (Сообщение 1191129)
приводи смещение к фиксированной длине:
Код AS3:

var v:Point = new Point((mouseX - herom.x) * -mspeed,(mouseY - herom.y) * -mspeed);
var target_v:Number=10;//желаемая скорость
var l:Number=v.length;
if (l>0) {
v.x=v.x/l*target_v;
v.y=v.y/l*target_v;
fonm.y += v.x;
fonm.x += v.y;
}


Вот спасибо! Сейчас опробую :)
Опробовал, работает, класс!

Zebestov 24.01.2016 03:21

А так не будет работать?
Код AS3:

var v:Point = new Point(herom.x - mouseX, herom.y - mouseY); // 
v.normalize(10); // желаемая скорость
fonm.x += v.x;
fonm.y += v.y;


SpeakerG 24.01.2016 15:00

Может просто поставить условие:
Если мышь справа от героя - сдвигать фон влево на заданную скорость;
Если мышь снизу - сдвигать фон вверх на заданную скорость;
И т.д.

Wolsh 24.01.2016 20:40

Цитата:

Если мышь справа от героя - сдвигать фон влево на заданную скорость;
Если мышь снизу - сдвигать фон вверх на заданную скорость;
Здесь должен учитываться угол — герой как-бы идет в направлении мышки. Скорость по X и по Y разная и зависит от этого угла, а не просто "влево/вправо". Другими словами, вот эту вашу "заданную скорость" и надо задать, она не константна.

SpeakerG 27.01.2016 20:10

а, я чет подумал что у него скроллинг ток по 4 сторонам)


Часовой пояс GMT +4, время: 20:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.