I'm trying to write a movement mechanic like this but how can I? If we hold to Space
key, character in the game will move like in here. If we take our hand from the key, the character will fall against to gravity. I did a research for about two hours but this site is the last solution way for me.
There is my code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace c_sharp_form_test_2 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
bitmap = new Bitmap(pictureBox1.Width, pictureBox1.Height);
timer.Interval = 5;
timer.Tick += new EventHandler(FormUpdate);
timer.Start();
}
Timer timer = new Timer();
Bitmap bitmap;
Point center = new Point(100, 100);
int radius = 40;
int FigureSize = 10;
Point end;
float angle = -90;
float angVel = 0;
float angAcc = 0;
bool isPressing = false;
private void Form1_KeyDown(object sender, KeyEventArgs e) {
if (e.KeyCode == Keys.Space) {
isPressing = true;
angle += 10;
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e) {
angVel = 0;
angAcc = 0;
isPressing = false;
}
private void FormUpdate(object sender, EventArgs e) {
end.X = (int)(radius * Math.Sin(angle / 57.2957795f)) + center.X;// from degrees to radians
end.Y = (int)(radius * Math.Cos(angle / 57.2957795f)) + center.Y;// from degrees to radians
Graphics g = Graphics.FromImage(bitmap);
Pen bp = new Pen(Color.Black);
SolidBrush b = new SolidBrush(Color.Black);
g.Clear(Color.White);
g.FillEllipse(b, end.X - FigureSize / 2, end.Y - FigureSize / 2, FigureSize, FigureSize);
g.DrawLine(bp, center.X, center.Y, end.X, end.Y);
pictureBox1.Image = bitmap;
if (!isPressing) {
angle += angVel;
angVel += angAcc;
angAcc = -0.15f * (float)Math.Sin(angle / 57.2957795f);
angVel *= 0.985f;//dampening
}
}
}
}
Thanks from now!
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…