Размытые круги в raylib-csC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Размытые круги в raylib-cs

Сообщение Anonymous »

Я написал какой-то код в 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»