小编Pep*_*peJ的帖子

如何逐渐旋转物体以面对另一个物体转动最短距离

我正在尝试旋转一个精灵,取决于多少度(或rad,我更喜欢度数),它不同于直接面向目标,问题是当目标到达某个位置时精灵决定旋转整个360度以其他方式而不是做额外的10.这张照片可能更好地解释了这个问题

蓝色方块=目标,红色方块=物体,绿色线=它想要的旋转,黑色线=当前旋转,棕色箭头=如何旋转以实现此目的,红色箭头=我希望它如何旋转.

蓝色方块=目标

红色方块=对象

绿线=它想要的旋转

黑线=当前旋转

棕色箭头=如何旋转以实现此目的

红色箭头=我希望它如何旋转.

请注意,情况1总是起作用,取决于它旋转的方式,但是情况2它总是进行旋转,无论它是当前旋转的"右"还是"左".

这是我用来旋转对象的代码.

    Vector2 distance = new Vector2(target.worldPos.X - this.worldPos.X, target.worldPos.Y - this.worldPos.Y);
    float wantRot = (float)Math.Atan2(distance.Y, distance.X);
    if (this.rotation < wantRot)
        this.rotation += MathHelper.ToRadians(45) * Time.deltaTime;
    if (this.rotation > wantRot)
        this.rotation -= MathHelper.ToRadians(45) * Time.deltaTime;
Run Code Online (Sandbox Code Playgroud)

我想要实现的是根据红色箭头而不是棕色箭头旋转(在案例2中).

注意:我不是编程方面的专家,我在过去的一年中不时地完成它(主要是简单的2D射击游戏/射击游戏),因此深入解释将不胜感激.我也是学生学习编程.

PS:标题的建议也会受到赞赏,因为我完全不知道该放什么.

c# xna rotation

13
推荐指数
1
解决办法
3066
查看次数

在类/子类中使用Content.Load <>

我想知道是否还有一个不是游戏本身的类中使用"Content.Load <>",比如说我想从类中加载一个纹理,而不是将纹理发送给它.

namespace ProjectGame1
{
    public class Ship
    {
        public Texture2D texture;

        public Ship()
        {
        this.texture = Content.Load<Texture2D>("ship");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我想要实现的一个例子

c# xna load class

4
推荐指数
1
解决办法
1万
查看次数

强制保存文件对话框以使用特定字符串作为文件名保存

嗨,我想知道是否有强制用户保存具有特定名称的文件.

例如,我知道你可以这样做:

SaveFileDialog.FileName = "string";
Run Code Online (Sandbox Code Playgroud)

但现在我想知道我是否可以锁定FileName,以便用户无法更改它.因为对于一个软件我要使FileName等于,(因为它加载文件的名称并将其作为TextBox的标题输入).

string Title;
Run Code Online (Sandbox Code Playgroud)

c# forms windows winforms

3
推荐指数
1
解决办法
2484
查看次数

Bitmap.Save"Generic Error"

当我运行我的应用程序时,以下错误被抛到我脸上"GDI +中发生了一般错误." 我环顾四周,看到人们有类似的错误,但没有找到真正的解决方案,或者实施屁股真的很痛苦.那些没有得到解决方案的人还没有发布他们的代码.

所以我想我不妨给它一个镜头并抛出另一个关于如何修复此错误的线程.这是我的代码和错误

            Random r = new Random();
            DirectoryInfo di = new DirectoryInfo(folderbrowser.SelectedPath);
            FileInfo[] fi = di.GetFiles().Where(f => extensions.Contains(f.Extension.ToLower())).ToArray();
            for (int i = 0; i < imageCount; i++)
            {
                int img1 = r.Next(imageCount);
                int img2 = r.Next(imageCount);
                while (img2 == img1)
                    img2 = r.Next(imageCount);
                pic1.Image = Image.FromFile(fi[img1].FullName);
                pic2.Image = Image.FromFile(fi[img2].FullName);
                Image i1 = pic1.Image;
                Image i2 = pic2.Image;
                Bitmap bitmap = new Bitmap(i1.Width + i2.Width, 1080);
                using (Graphics g = Graphics.FromImage(bitmap))
                {
                    g.DrawImage(i1, 0, 0);
                    g.DrawImage(i2, i2.Width, 0);
                } …
Run Code Online (Sandbox Code Playgroud)

c# forms windows gdi+ bitmap

3
推荐指数
1
解决办法
5478
查看次数

传递"No/Null/0"作为参考?

嘿,我有一点问题,我有这个功能

编辑:这不是我的功能,它是图书馆的一部分.

void Input_GetMousePos(
  float *x,
  float *y
);
Run Code Online (Sandbox Code Playgroud)

而且我只想存储Y值,那么我怎么说X是"NULL"或"我不想写任何东西"?

我找到的解决方法是声明一个变量,但从不再使用它,就像这样

float vx, vy;
_hge->Input_GetMousePos(&vx, &vy);
Run Code Online (Sandbox Code Playgroud)

然后我再也不会使用"vx"了.

所以我的问题是,有没有办法传递"NULL"或类似的东西?

也欢迎有关标题更改的建议.

c++ null reference function

3
推荐指数
1
解决办法
137
查看次数

2D世界,大规模的世界探索教程?

我想知道这里是否有人可能是善良的,并将我链接到一些教你如何创造一个大世界的教程,我指的是XNA中的游戏比你设置的分辨率更大.意味着你有一个可以探索的大世界,你不仅仅是坚持你的显示器的大小.请注意我只用C#和XNA编程了大约6个月.但我有5年的游戏开发经验.

所以我要追求的是:一些基本的相机?打破监视器大小的世界/游戏限制.

注意:我真的不知道要搜索什么来找到这样的东西.有关搜索内容的提示将受到关注.

c# xna

1
推荐指数
1
解决办法
624
查看次数

标签 统计

c# ×5

xna ×3

forms ×2

windows ×2

bitmap ×1

c++ ×1

class ×1

function ×1

gdi+ ×1

load ×1

null ×1

reference ×1

rotation ×1

winforms ×1