On Wed, Jun 08, 2011 at 12:53:56PM +1200, Ralph Versteegen wrote:
> On 8 June 2011 12:48, Mike Caron <caron.m...@gmail.com> wrote:
> > On 6/7/2011 20:46, James Paige wrote:
> >>
> >> On Wed, Jun 08, 2011 at 12:43:12PM +1200, Ralph Versteegen wrote:
> >>>
> >>> On 8 June 2011 11:52, Mike Caron<caron.m...@gmail.com>  wrote:
> >>>>
> >>>> On 6/7/2011 19:49, Ralph Versteegen wrote:
> >>>>>
> >>>>> On 8 June 2011 07:34, Mike Caron<caron.m...@gmail.com>    wrote:
> >>>>>>
> >>>>>> On 07/06/2011 10:44 AM, James Paige wrote:
> >>>>>>>
> >>>>>>> Well, solved in the sense that I can add six more rows and 10 more
> >>>>>>> columns to my background layer and it will look okay, but I still
> >>>>>>> really
> >>>>>>> want to understand the math needed to make the parallax work with the
> >>>>>>> 1/3 size layer, since that is the same math that will be required
> >>>>>>> when
> >>>>>>> parallax scrolling is a built-in feature on different-sized map
> >>>>>>> layers
> >>>>>>> in the future.
> >>>>>
> >>>>> I meant solved in the sense that Mike (Willis) already gave the
> >>>>> formula for that.
> >>>>>
> >>>>>> First, let us suppose a few things:
> >>>>>>
> >>>>>> MapWidth := 3000
> >>>>>> LayerWidth := 1000
> >>>>>> ScreenWidth := 320
> >>>>>>
> >>>>>> You want the layer to butt up against the left side of the map when
> >>>>>> the
> >>>>>> camera is at X = 0, and to butt up against the right side of the map
> >>>>>> when
> >>>>>> the camera is as X = (MapWidth - ScreenWidth).
> >>>>>>
> >>>>>> When on the left side of the map, the camera's X, the map's X and the
> >>>>>> layer's X are all 0. This case is easy.
> >>>>>>
> >>>>>> On the right side of the map, however, it's not so easy. The camera
> >>>>>> stop
> >>>>>> at
> >>>>>> 2680 (MapWidth - ScreenWidth), while the layer needs to stop at 2000
> >>>>>> (MapWidth - LayerWidth).
> >>>>>
> >>>>> You mean the layer needs to stop at LayerWidth - ScreenWidth = 680.
> >>>>> You get marks for correcting working-through, but this makes the rest
> >>>>> of your post wrong.
> >>>>
> >>>> Huh? If the layer stops at 680, that means its right edge is at 1680,
> >>>> which
> >>>> puts it squarely off the screen. I thought the idea was to have the
> >>>> right
> >>>> edge stop at 3000, like the other right edges.
> >>>
> >>> It looks like we were talking about completely different things: I was
> >>> talking about the camera position on the parallax map layer, and you
> >>> about the offset of the parallax map layer to the map root slice.
> >>
> >> Either way, I am still completely confused. My attempt to use Mike's
> >> suggested formula resulted in the parallax layer being correctly placed
> >> at the bottom and right edges of the map, and being at 0,0 for
> >> all other camera positions :(
> >>
> >> set slice x(sl, (camera pixel x / (mapw -- screenw)) * (mapw -- layerw))
> >> set slice y(sl, (camera pixel y / (maph -- screenh)) * (maph -- layerh))
> 
> No no!
> 
> set slice x(sl, (camera pixel x  * (mapw -- layerw) / (mapw -- screenw))
> set slice y(sl, (camera pixel y  * (maph -- layerh) / (maph -- screenh))

Yay! That works! Thank you!

I'll spend some time messing with it and try to mentally internalize it.

Another problem is that the movement is jerky when you start and stop 
walking. This problem is (as far as I know) common to all attempts to 
manually position slices relative to the map using a timer that repeats 
once per tick.

---
James
_______________________________________________
Ohrrpgce mailing list
ohrrpgce@lists.motherhamster.org
http://lists.motherhamster.org/listinfo.cgi/ohrrpgce-motherhamster.org

Reply via email to