在XNA中以向上弯曲的弧形移动2D精灵?

问题描述

| 好吧,这是我的问题。 我一直在尝试在XNA中创建一种可视的昼/夜循环,其中有一个基础类更新和保存时间,还有一个Sky类,该类根据类更新的时间输出背景。 我无法弄清楚的是如何根据一天中的什么时间使月亮/太阳以向上弯曲的弧形移动,该弧形跨越屏幕。最具问题的部分是随着时间的流逝,使Y轴弯曲而X轴移动。 有人可以帮助我吗? 编辑: 好吧,看起来像Andrew Russels的例子可以帮助我完成我需要做的事情。 尽管我需要一定的经验,但最终还是找到了合适的解决方案:     浮动时间=(float)Main.inGameTime.Seconds /(InGameTime.MaxGameHours * 60 * 60/2);
this.Position.X = Time * (Main.Viewport.X + Texture.Width * 2) - Texture.Width;
this.Position.Y = Main.Viewport.Y - (Main.Viewport.Y * (float)Math.Sin(Time * MathHelper.Pi) / 2) - (Main.Viewport.Y / 2) + 50;
    

解决方法

        尝试查看
Math.Sin
Math.Cos
函数。这些是您要寻找的三角函数。 这样的事情(给
SpriteBatch
个职位):
float width = GraphicsDevice.Viewport.Width;
float height = GraphicsDevice.Viewport.Height;
float time = 0.5f; // assuming 0 to 1 is one day
Vector2 sunPosition = new Vector2(time * width,height - height * (float)Math.Sin(time * width / MathHelper.TwoPi));
(免责声明:我尚未测试此代码。)     ,        还有Curve类。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...