Visual CSharp .NET - Salto y Gravedad

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 7 puestos en Visual CSharp .NET (en relación al último mes)
Gráfica de Visual CSharp .NET

Salto y Gravedad

Publicado por Juan (6 intervenciones) el 02/11/2020 14:50:01
Alguno me recomienda un codigo para hacer que un picturebox (ya con sus movimientos) pueda hacer un salto? A lo que me refiero es que; el personaje tenga gravedad cuando hace el movimiento para arriba y se genere un salto y no un vuelo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Salto y Gravedad

Publicado por Nacho (23 intervenciones) el 03/11/2020 19:31:37
Para una fórmula matemática son iguales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2
Ha disminuido su posición en 7 puestos en Visual CSharp .NET (en relación al último mes)
Gráfica de Visual CSharp .NET

Salto y Gravedad

Publicado por juan (6 intervenciones) el 03/11/2020 21:34:46
En que parte del codigo se cumple la funcion de gravedad que asimila a un salto? Es que tengo poco tiempo para hacerlo y no se nada de programacion. Gracias igual por la respuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Salto y Gravedad

Publicado por Nacho (23 intervenciones) el 04/11/2020 19:26:36
Clase que salta con gravedad. Necesitará algún retoque.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using System;
using System.Timers;
using System.Drawing;
 
namespace Parabola
{
    class Salto
    {
        public delegate void Siguiente(int x, int y);
        public event Siguiente onSiguiente;
        public delegate void Tope(int x, int y);
        public event Tope onTope;
 
        int f_xInicial = 0;
        int f_yInicial = 0;
        int f_VelocidadInicial;
        double f_Gravedad = 9.8;
        double f_Grados;
        double radianes;
        Timer timer;
        Rectangle f_Ventana;
 
        public int XInicial
        {
            get { return f_xInicial; }
            set { f_xInicial = value; }
        }
        public int YInicial
        {
            get { return f_yInicial; }
            set { f_yInicial = value; }
        }
 
        public int VelocidadInicial
        {
            get { return f_VelocidadInicial; }
            set { f_VelocidadInicial = value; }
        }
 
        public double Gravedad
        {
            get { return f_Gravedad; }
            set { f_Gravedad = value; }
        }
 
        public double Grados
        {
            get { return f_Grados; }
            set
            {
                f_Grados = value;
                radianes = (double)(f_Grados * Math.PI / 180);
            }
        }
 
        public Rectangle Ventana
        {
            get { return f_Ventana; }
            set { f_Ventana = value; }
        }
 
        public void Empieza()
        {
            timer = new Timer();
            timer.Interval = 10;
            timer.Elapsed+= Timer_Tick;
            timer.Start();
        }
        public void Para()
        {
            timer.Stop();
        }
 
        double tiempo = 0;
        int x;
        int y;
        double vy;
        private void Timer_Tick(object sender, EventArgs e)
        {
            double ymax, tm;
            x = (int)(f_VelocidadInicial * Math.Cos(radianes) * tiempo);
            y = (int)(f_VelocidadInicial * Math.Sin(radianes) * tiempo - (.5 * f_Gravedad * (tiempo * tiempo)));
            vy = (int)(f_VelocidadInicial * Math.Sin(radianes) - (f_Gravedad * tiempo));
            tiempo += 0.1;
            int xx = f_Ventana.Width - (x + f_xInicial);
            int yy = f_Ventana.Height - (y+ f_yInicial);
            if (xx >= 0 && xx <= f_Ventana.Width && yy >= 1 && yy <= f_Ventana.Height) if (onSiguiente != null) onSiguiente(xx, yy); else;
            else if (onTope != null) onTope(xx, yy);
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar