我正在尝试使用类来构建小行星类型的翻拍,我在这里有一个制作飞船的类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
namespace AsteroidsTest {
class Character {
KeyboardState inputKeyboard;
Texture2D texture;
Rectangle rectangle;
Vector2 position;
Vector2 origin;
Vector2 speed;
const float tangentialVelocity = 5f;
public float rotation;
public Character(Texture2D newTexture, int positionX, int positionY) {
texture = newTexture;
position = new Vector2(positionX, positionY);
}
public void Update(GameTime gametime, Keys KeyUp, Keys KeyRight, Keys KeyLeft) {
inputKeyboard = Keyboard.GetState();
rectangle = new Rectangle((int)position.X, (int)position.Y, texture.Width, texture.Height);
position += speed;
origin = new Vector2(rectangle.Width / 2, rectangle.Height / 2);
if (inputKeyboard.IsKeyDown(KeyRight)) {
rotation += 0.1f;
}
else if (inputKeyboard.IsKeyDown(KeyLeft)) {
rotation -= 0.1f;
}
if (inputKeyboard.IsKeyDown(KeyUp)) {
speed.X = (float)Math.Cos(rotation) * tangentialVelocity;
speed.Y = (float)Math.Sin(rotation) * tangentialVelocity;
} else if (speed != Vector2.Zero) {
speed = Vector2.Zero;
}
}
public void Draw(SpriteBatch spriteBatch) {
spriteBatch.Draw(texture, position, null, Color.White, rotation, origin, 1.0f, SpriteEffects.None, 0);
}
}
}
但是当它使用我的主类绘制时,精灵上的纹理是正常绘制的,但是当我按下w向前移动时,它会将我移动到右边。当我旋转它的时候,好像我的船的顶部在一边,这怎么可能呢?
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace AsteroidsTest {
public class Asteroids : Microsoft.Xna.Framework.Game {
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Character Ship;
Texture2D playerTexture;
public Asteroids() {
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected override void Initialize() {
base.Initialize();
}
protected override void LoadContent() {
spriteBatch = new SpriteBatch(GraphicsDevice);
playerTexture = Content.Load<Texture2D>("Actors//Ship");
Ship = new Character(playerTexture, 16, 16);
}
protected override void UnloadContent() {
}
protected override void Update(GameTime gameTime) {
if (Keyboard.GetState().IsKeyDown(Keys.Escape))
this.Exit();
Ship.Update(gameTime, Keys.Up, Keys.Right, Keys.Left);
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime) {
GraphicsDevice.Clear(Color.Black);
spriteBatch.Begin();
Ship.Draw(spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
}
}
}
编辑:似乎只是旋转图像90度顺时针固定它,但不幸的是,它默认为该角度。
我想它是按预期工作的-默认情况下(0旋转)意味着对象向右看,而不是向上看(相对于显示器/屏幕)。
我有一个简单的平原(正方形),上面有灯光和材料,我想在上面放一个地球纹理。但是什么都没有出现。我检查过,认为它正确加载了RGB数据,所以我的猜测是这一行有问题(数据是*char,图像是BMP24) 这是一个例子。bmp加载功能: 以下是主要和显示功能: 我玩过代码,有时(当我使用int而不是char*时)我会得到一个红色的材料覆盖所有内容,但不知道到底是什么导致了它 更新:必须更改几行才能正常工作
我有一个简单的场景,包括一个带有月亮漫反射和凹凸纹理的球体模型,烘焙到一个“.GLTF”文件中我使用GLTFJSX导入了模型,但只显示了模型。我打开了灯,但这似乎并没有解决问题。我把同样的模型放在另一个场景中,纹理加载得很好。 问题沙箱:https://codesandbox.io/s/patient-framework-3holn?file=/src/App.js
译注 注意,由于作者对教程做出了更新,之前本节使用的是SOIL库,但现在改为了使用stb_image.h库,关于SOIL配置的部分现在已经被修改,但我仍决定将这部分教程保留起来,放到一个历史存档中,如果有需要的话可以到这里来查看。 我们已经了解到,我们可以为每个顶点添加颜色来增加图形的细节,从而创建出有趣的图像。但是,如果想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会
将图片加载后创建纹理对象,纹理将直接用于绘制 createTextures(object) 纹理异步加载,批量异步加载接口 手Q版本:7.8.0 函数参数object属性: 属性名 类型 是否必填 说明 file Array 是 要加载的图片文件数组 success Function 否 接口调用成功回调 fail Function 否 接口调用失败回调 complete Function 否 接
我正在尝试同时渲染背景和我的角色动画和我的角色工具。这件事看起来很琐碎,但我还是搞不懂。这里是我现在为我的呈现所提供的代码。 现在,当我运行以下代码时(将切换到底部): 这是结果 我就是找不到一个模式,总是一个凌驾于另一个之上。我会非常感激我的失落。谢谢!!
如果我创建一个.png 1024 x 1024的纹理,并在中间画一个124 x 124的圆,它的周围将是空的,它使用的RAM是否与我在124x124空间上画一个124 x 124的圆相同?