在C#中使用SFML创建自定义渲染系统>> [

问题描述 投票:1回答:1
我正在尝试使用C#制作2D引擎。我有一个类似于Unity的MonoBehaviour的“组件”系统。

我想出了Camera组件和SpriteRenderer组件。正在渲染精灵,尽管位置绝对不对。

public class Camera : Component { public GameWindow window; // Custom window class public override void LateUpdate() // Called at the end of each frame { window.renderWindow.Clear(); foreach (GameObject gObject in gameObject.world.gameObjects) { SpriteRenderer Renderer = gObject.GetComponent<SpriteRenderer>(); if (Renderer != null) { float screenPosX = gameObject.transform.position.X - gObject.transform.position.X; float screenPosY = gameObject.transform.position.X - gObject.transform.position.Y; Renderer.attachedSprite.Position = new Vector2f(screenPosX, screenPosY); Renderer.attachedSprite.Scale = gObject.transform.scale; Renderer.attachedSprite.Color = Renderer.color; window.renderWindow.Draw(Renderer.attachedSprite); } } window.renderWindow.Display(); } }

我试图通过从摄像机的位置减去待渲染的位置来获得相对于对象屏幕的坐标。 

我知道当前所有对象都已绘制,即使它们不在屏幕上也是如此。

我正在尝试使用C#制作2D引擎。我有一个类似于Unity的MonoBehaviour的“组件”系统。我想出了一个Camera组件和一个SpriteRenderer组件。正在渲染精灵,...

c# sfml sfml.net
1个回答
0
投票
float screenPosX = gameObject.transform.position.X - gObject.transform.position.X; float screenPosY = gameObject.transform.position.*X* - gObject.transform.position.Y;
© www.soinside.com 2019 - 2024. All rights reserved.