Studio-Lovelies / GG-JointJustice-Unity

It's the repo for the GGJJ Unity version! I'm too dumb to come up with a wittier description.
Mozilla Public License 2.0
7 stars 8 forks source link

Support an action to Move characters on screen #418

Open notexplosive opened 7 months ago

notexplosive commented 7 months ago

Description

Writers want the ability for characters to "fly in" or "fly out" from an arbitrary position (from the left, from the bottom, etc). I think this can be genericized into the ability to displace/move a character.

Acceptance Criteria

This story will be finished when you can use a Narrative Script command to move a character. There will probably need to be two variants (or a parameter on one command)

This way we can for example:

Implementation thoughts (not prescriptive): I think the "default" position should be 0,0. And any offset should be some number of "units" away from the center. That way you'll be able to easily tell if an actor is in the "right" position by moving it to the origin.

ViMaSter commented 7 months ago

Potential suggestion for the action:

In this scenario the target is wherever the actor was placed using SET_ACTOR_POSITION or ACTOR (based on a scene with multiple slots or without, respectively).


Move a character instantly

That could be handled by SET_ACTOR_POSITION; calling &TRANSLATE_CHARACTER with 0 seconds would not do anything.


The "offset" is a good topic actually: Right now character sprites always take up the entire screen. Let's say we default to an offset of 1 full viewport:
Actors wouldn't appear for over half of the duration, because they tend to takes up less than half of the screen:

An example of &TRANSLATE_CHARACTER:Arin,2,MiddleLeft…after 0s: image …after 1s: image …after 2s: image One potential way to resolve this, would be to determine the first non-transparent pixel closest to the viewport in the scroll direction and anchor the actor there: image However I feel like this might only work for static images. Either animations would require recalculating the "first non-transparent pixel" in the sprite whenever the animation is played or we'd have to accept that an animation "jumps" into the screen like so: image image