Scaling left to right

Started by Guyserman82, Sun 27/12/2009 22:57:56

Previous topic - Next topic

Guyserman82

Well, there are really two questions here. First, is there an easy way to scale from left to right, and if it is done with a walkable area, how can I have two walkable areas that are exactly the same, just activated in different conditions?

MrCheminee

You can give each walking area another scale, so if you put two walking areas next to eachother with the first on 100 and the other on let's say 150, you will have from the left to the right other scalingproporties. Then you can put some more walking areas between them to smoothen the scaling, or a walkbehind object...

Khris

You have to do it manually. In the room's before fadein event, call player.ManualScaling = true;, then set the scaling in the room's repeatedly execute.

An example: say you want to scale the player from 60% to 100% on a walkable area stretching from 10 to 290.
(100-60) / (290-10) = 40 / 280 = 1/7.

Thus:
Code: ags
  player.Scaling = (player.x - 10)/7 + 60;


About the second part of your question, I'm not sure what you're after, could you explain a bit more?

Guyserman82

Quote from: Khris on Sun 27/12/2009 23:29:07
You have to do it manually. In the room's before fadein event, call player.ManualScaling = true;, then set the scaling in the room's repeatedly execute.

An example: say you want to scale the player from 60% to 100% on a walkable area stretching from 10 to 290.
(100-60) / (290-10) = 40 / 280 = 1/7.

Thus:
Code: ags
  player.Scaling = (player.x - 10)/7 + 60;


About the second part of your question, I'm not sure what you're after, could you explain a bit more?
thanks, I'll try that.
What I mean when I say two walkable areas, is that if I were to scale left to right using a normal walkable area, I would want one area on if certain conditions were met. With your code, all I will have to do is have that code activate when those conditions are met.

Khris

You can't have overlapping walkable areas, but all you'd have to do is change the area's scaling (if horizontal scaling was possible).

monkey0506

#5
Although you can't have overlapping walkable areas, you are already using manual scaling so you could use the walkable area's scaling level as a variable to determine which functionality it should give. For example if you want the horizontal scaling initially turned off you could set the scaling level for the area to 0 in the editor. Then when you want to activate the horizontal scaling you could do:

Code: ags
  // activate horizontal scaling
  SetAreaScaling(WALKABLE_AREA_ID, 5, 5);


And then change the rep_ex code to something such as:

Code: ags
 // room rep_ex
  player.Scaling = 100; // restore normal scaling if not on the area
  if (GetScalingAt(player.x, player.y) == 5) player.Scaling = (player.x - 10) / 7 + 60;


Per the manual SetAreaScaling accepts values from 5 to 200 so logically if you're using manual scaling then that could give you variables to indicate up to 196 different (virtual) walkable areas for the same actual area. That would mean that every character and object in the area would have to be using manual scaling, but it could work.

SMF spam blocked by CleanTalk