Solved

reduce movement speed of moving picturebox

Posted on 2011-09-20
3
244 Views
Last Modified: 2012-05-12
So I'm actually stuck at how to reduce movement speed (of my minigolf game)
To recap, I have a small picturebox and a timer set to 20ms.

So on mouseUp I have following code:
xVel = (e.X - gameBall.Location.X) * speed
            yVel = (e.Y - gameBall.Location.Y) * speed
            gameTimer.Enabled = True

Open in new window


Now, in my timerTick I have the code to check for wall collision and this:
If speed > 0 Then
            speed -= 0.01
        Else
            gameTimer.Enabled = False
        End If

Open in new window


Now that I think about it, the xVel and yVel are already multiplied by the speed (usually around 0,07). This might seem like a simple answer to you, but my brains wont function anymore :D
0
Comment
Question by:Mutsop
  • 2
3 Comments
 
LVL 8

Expert Comment

by:gena17
ID: 36567385
I believe you want to reduce movement speed so that each gets 0 at the end.
That means you first need to calculate the distance that your picture box will travel.
I think the speed change should NOT be linear, but a some function speed=f(distance). And perhaps the function should be logarithmic, since it gives the best view of reducing speed, IMO.
Something like ln(D-d), where D is the total distance, and d is the current distance traveled.
0
 
LVL 3

Author Comment

by:Mutsop
ID: 36567452
How to get your total distance if you just have the speed?
Speed is actually calculated like so

Private Sub strengthTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles strengthTimer.Tick
        If strengthBar.Value = 100 Then
            strengthBar.Value = 0
        End If
        strengthBar.PerformStep()
    End Sub

Private Sub Main_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
        strengthTimer.Enabled = False
        'Speed value
        speed = strengthBar.Value / 500
        If e.Button = Windows.Forms.MouseButtons.Left Then
            ControlPaint.DrawReversibleLine(ptStart, ptEnd, Color.Black)
            Cursor.Clip = Nothing
            xVel = (e.X - gameBall.Location.X) * speed
            yVel = (e.Y - gameBall.Location.Y) * speed
            gameTimer.Enabled = True
        End If
    End Sub

Open in new window


The strengthTimer_Tick is activated upon pressing down the left mouse button.
0
 
LVL 8

Accepted Solution

by:
gena17 earned 500 total points
ID: 36580301
The total distance should be calculated in advance at the moment when user clicks on Desired Location.
The total distance is the distance between Desired Location and Current Location. It is calculated only once and has nothing to do with speed.

Speed is calculated dynamically on every tick of the timer, based on Total Distance and Current Distance.
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
ASP.NET MVC -Update model when click on <li> element 29 68
vb.net sendkey 4 18
Convert VB web project to C# 3 37
reading an excel file vb.net 2 16
More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
The ECB site provides FX rates for major currencies since its inception in 1999 in the form of an XML feed. The files have the following format (reducted for brevity) (CODE) There are three files available HERE (http://www.ecb.europa.eu/stats/exch…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

756 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question