Я написал какой-то код в C# и Raylib-CS. Он должен сделать это: когда вы делаете щелчок, должен быть нарисован круг и строку между центром круга и фактической позицией мыши. Когда вы делаете еще один щелчок, круг должен двигаться против направления строки. < /P>
Итак, мой код делает то, что я хотел сделать. Но на высоких скоростях круги выглядят размытыми на стороне, направленной в сторону от направления движения. Когда круг движется медленнее, мне выглядит нормально. Это нормально? Есть ли что -то, что я могу сделать? < /P>
Вот часть 1 моего кода: < /p>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using Raylib_cs;
namespace BallGame
{
class Circle
{
// KONSTRUKTOR
public Circle(Vector2 position, int radius)
{
this.Position = position;
this.Radius = radius;
}
// PROPERTIES
public int Radius { get; set; }
public Vector2 Position { get; set; }
public Color color { get; set; }
public Vector2 Direction { get; set; }
// METHODEN
public void move(float speed, float dt)
{
this.Position += this.Direction * speed * dt;
}
}
}
< /code>
Вот часть 2 моего кода: < /p>
using Raylib_cs;
using System.Numerics;
namespace BallGame
{
class Program
{
static void Main(string[] args)
{
//Raylib.SetConfigFlags(ConfigFlags.Msaa4xHint);
Raylib.InitWindow(1600, 1200, "Ball Game");
Raylib.SetTargetFPS(120);
Vector2 circlePos = new Vector2(-1, -1);
Vector2 mousePos = new Vector2();
List circles = new List();
int[] clickPositions = new int[2];
while (!Raylib.WindowShouldClose())
{
// EVENTS
if (Raylib.IsMouseButtonPressed(MouseButton.Left))
{
if (circlePos != new Vector2(-1, -1))
{
circles[^1].Direction = Vector2.Normalize(circlePos - mousePos);
circlePos = new Vector2(-1, -1);
}
else
{
// not yet a circle, first click
circlePos = Raylib.GetMousePosition();
Circle newCircle = new Circle(circlePos, 50);
circles.Add(newCircle);
}
}
// UPDATE
if (circlePos != new Vector2(-1, -1))
{
mousePos = Raylib.GetMousePosition();
}
foreach (var circle in circles)
{
circle.move(500.0f, Raylib.GetFrameTime());
}
// DRAW
Raylib.BeginDrawing();
Raylib.ClearBackground(Color.LightGray);
// Line
if (circlePos != new Vector2(-1, -1))
{
Raylib.DrawLine(Convert.ToInt32(circlePos.X),
Convert.ToInt32(circlePos.Y), Convert.ToInt32(mousePos.X),
Convert.ToInt32(mousePos.Y), Color.Black);
}
// Circle
foreach (var circle in circles)
{
Raylib.DrawCircleV(circle.Position, circle.Radius, Color.Magenta);
}
Raylib.EndDrawing();
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... -raylib-cs
Размытые круги в raylib-cs ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение