Tag: 2d

C#中的2D游戏编程教程

我想学习用C#编写2D游戏。 什么是面向初学者的最佳教程,为C#编写,最好使用GDI +(或同样简单的东西)? 我依靠这个社区的经验来指导我走向最好。

为什么我的图像不会移动?

我正在制作一个2D自上而下的游戏,玩家控制着一只猫。 为此,此人使用WASD键移动。 我有Form1,GameManager,Cat和Moveable类。 Form1向GameManager发送cat imagelist和e.graphics(用于图片框)。 GameManager有一个计时器,每个勾选检查猫是否已经移动。 Cat处理移动逻辑。 当我运行程序时,cat精灵显示在其初始位置,但是在按下键时不会移动。 我无法弄清楚我的问题,有人可以帮忙吗? 这是我的课程: Form1中: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace CatAndMouse { public partial class Form1 : Form { GameManager myGM = new GameManager(); public Form1() { InitializeComponent(); newGame(); } private void pictureBox1_Paint(object sender, PaintEventArgs e) { […]

归航导弹,它们如何工作?

我想要创造什么 向玩家发射导弹的物体,如果与玩家发生碰撞,玩家将死亡。 问题 导弹是如何向玩家移动的。 如何使导弹移动,使其不会立即直接向玩家移动(以一个角度缓慢移动)。 我有一个让鼠标成为“玩家”和导弹的公式。 mouse = Mouse.GetState(); mousePosition = new Vector2(mouse.X, mouse.Y); A = (mouse.X – Position.X); B = (mouse.Y – Position.Y); C = (A * A) + (B * B); C = (float)Math.Sqrt(C); Angle1 = A / C; Angle2 = B / C; (绘图是最好的!) 这只能获得从导弹到玩家的距离,现在我需要找到移动导弹的角度或东西,我需要做什么?

多点之间的最短路线

我需要找到多点之间的最短路线。 让我们说我有以下四点: var startPoint = new Point(1, 1); var pointsToGoPast = new List { new Point(3,1); new Point(2,4); }; var endPoint = new Point(10, 10); 因此,为了获得从startPoint到endPoint的最短路径,我想找出首先要经过的点。 谁能帮我? 更新:必须经过pointsToGoPast列表中的每个点。 每条路线的成本都是均匀的。

使用WPF进行透视变换

WPF允许在图形对象上指定线性仿射变换。 通过这种方式,您可以进行平移,旋转,缩放,倾斜或其组合。 您可以指定2×3矩阵。 我想要做的是2D空间中的透视变换,它需要3×3矩阵,并且可以从Photoshop或GIMP中获知,您可以在其中独立拖动图像的所有4个角。 我尝试使用WPF的3Dfunction,设置Viewport3D , OrthographicCamera并将(2D)对象放置在xy平面上。 但我想知道在WPF中是否有更简单的方法来完成透视转换? 我也问,因为我想对文本进行透视变换:在2D中我可以使用TextBlock ,在3D中它变得更加复杂,我必须从FormattedText创建一个Geometry的Brush 。

将3D Raycast转换为Raycast2D

我在下面有这个代码可以控制3个玩家中受影响的玩家。 我能够通过在2D精灵后面添加一个3D立方体来实现它,因为我的游戏应该是2D,我很难在2D中实现它。 我真的很困惑如何在2D中这样做,因为我真的对参数感到困惑。 虽然我已经通过上面提到的方式实现了它,但我仍然希望在纯2D中实现它。 因为当选定的玩家移动时我遇到了这个问题,所以精灵移动得更快。 public GameObject target = null; // Use this for initialization void Start () { } // Update is called once per frame void Update () { if(Input.touchCount > 0 || Input.GetTouch(0).phase == TouchPhase.Began) { Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(0).position); Debug.DrawRay(ray.origin,ray.direction * 20,Color.red); RaycastHit hit; if(Physics.Raycast(ray, out hit,Mathf.Infinity)) { Debug.Log(hit.transform.gameObject.name); if(this.target != […]

使背景或相机“滚动”基于字符位置

我正在开发一款具有自上而下视图的RPG游戏。 我想将一张图片加载到背景中,这是角色正在行走的内容,但到目前为止,我还没有弄清楚如何正确地重新绘制背景,以便它“滚动”。 我发现的大多数示例都是自动滚动。 我希望相机保持在角色的中心,直到您的背景图像到达其边界,然后角色将移动,而图像不会在另一个位置重新绘制。

确定winforms应用程序中像素的颜色

我希望能够在屏幕上的某个点确定winform的背景颜色,因此我可以根据特定的颜色采取一些措施。 可悲的是,System.Drawing库似乎没有指定一个允许我这样做的方法。 那么我应该如何确定某一点的颜色?

在Unity 2D中翻转2D Sprite动画

我有一个关于2D Sprite动画的快速问题,我无法在任何地方找到具体答案: 我有一个带有步行动画的精灵到右边。 但是,当他向左走(2D侧卷轴)时,我显然想要将动画向左翻转。 我可以使用transform.localscale.x轻松翻转精灵本身,但是,它只翻转精灵。 不是动画片段。 (这不再发生在Unity中) 因此,当精灵翻转时,动画片段开始播放的那一刻,它会向右翻转(因为我唯一的动画片段是面向右侧的精灵)。 这是在Photoshop中翻转精灵的唯一方法,还是有办法在Unity中执行此操作? 谢谢! 更新:如果通过将变换乘以-1来缩放变换,则使用单位的实际版本,动画帧也会缩放。

为什么使用带有破折号模式的笔会在WPF自定义2D绘图中导致巨大的(!)性能降级?

希望任何人都可以阐明这一点,以便我可以使用带有破折号模式的笔? 我正在使用IScrollInfo的DataContext.Draw X在WPF中编写一个可滚动的图表(一个实现IScrollInfo ScrollViewer中的IScrollInfo )。 我有几千个DrawingVisual可以通过在托管它们的Panel上使用TranslateTransform来滚动。 我通过在它上面放置一个Panel并使用DataContext.DrawLine(pen, new Point(0, y), new Point(widthOfPanel, y));从一个边缘到另一个边缘绘制简单的水平线来实现网格DataContext.DrawLine(pen, new Point(0, y), new Point(widthOfPanel, y)); //(注意:这些线总是静态的,它们永远不会移动)。 滚动表现绝对疯狂(即立即绘制DrawingVisual并立即滚动)。 但是如果我使用一个使用破折号模式的Pen (例如见下面)来绘制网格线,那么滚动非常不稳定并且性能似乎已降低了100倍(估计值)。 谁能解释为什么会发生这种情况以及如何解决这个问题? 带划线图案的笔示例: