Questions tagged «rotation»

旋转是对象围绕特定轴的圆周运动。

2
球体的任意旋转
我正在编写一种机制,允许用户在球体表面周围移动。球面上的位置当前存储为theta和phi,其中theta是当前位置的z轴和xz投影之间的角度(即围绕y轴的旋转),并且phi是从y轴到该位置的角度。我解释得很差,但实际上theta = yaw,phi = pitch Vector3 position = new Vector3(0,0,1); position.X = (float)Math.Sin(phi) * (float)Math.Sin(theta); position.Y = (float)Math.Sin(phi) * (float)Math.Cos(theta); position.Z = (float)Math.Cos(phi); position *= r; 我相信这是正确的,但是我可能是错的。我需要能够在半径为的世界空间的起点处围绕球体表面在任意伪二维方向上移动r。例如,握持区W应相对于玩家的方向在球体上方向上移动。 我相信我应该使用四元数来表示球体上的位置/方向,但是我想不出正确的方法。球形几何不是我的强项。 本质上,我需要填写以下内容: public void Move(Direction dir) { switch (dir) { case Direction.Left: // update quaternion to rotate left break; case Direction.Right: // update …

4
GLM:欧拉角与四元数
希望您知道GL数学(GLM),因为我遇到了问题,我无法中断: 我有一组欧拉角,我需要在它们之间进行平滑插值。最好的方法是将它们转换为四元数并应用SLERP算法。 我的问题是如何用Euler Angles 初始化 glm :: quaternion? 我一遍又一遍地阅读了GLM文档,但我找不到合适的文档Quaternion constructor signature,那需要三个欧拉角。我找到的最接近的是 angleAxis()函数,该函数获取角度值和该角度的轴。请注意,我正在寻找一种方法,如何解析RotX, RotY, RotZ。 供您参考,这是上面提到的angleAxis() 函数签名: detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)

3
如何在不破坏美观的情况下旋转像素艺术精灵?
我现在正面临一个巨大的“游戏设计”问题。我正在制作一个像素艺术的游戏,使用双线性插值可以解决很多动画问题。另一方面,它不再是“像素游戏”。 如果我使用“双线性插值”,则动画可以工作,但看起来像“混合式”,并且失去了艺术风格。我要么弄乱动画,要么弄乱艺术风格。我不能拥有两者似乎。 还有其他解决方法吗?
12 2d  rotation  pixel-art 

2
如何将精灵朝其面对的方向移动?
我正在使用Java / Slick 2D。我正在尝试使用鼠标旋转精灵,并使用箭头键移动精灵。我可以让精灵旋转没有问题,但是我不能让它朝应该的方向移动。当我点击“前进”时,子画面不一定会移向鼠标。实际上,它只会真正移到屏幕的左侧。我确信必须有一些标准代码,因为许多游戏都使用这种风格的动作。谁能帮我解决这个三角帆的问题?谢谢 编辑:这是旋转代码(它做其他奇怪的事情: https //stackoverflow.com/questions/12610320/why-is-my-image-rotating-off-center) int mX = Mouse.getX(); int mY = HEIGHT - Mouse.getY(); int pX = sprite.x; int pY = sprite.y; int tempY, tempX; double mAng, pAng = sprite.angle; double angRotate=0; if(mX!=pX){ mAng = Math.toDegrees(Math.atan2(mY - pY, mX - pX)); if(mAng==0 && mX<=pX) mAng=180; } else{ …

3
如何使实体向某个方向移动?
我有一个Entity实例,每个游戏滴答声都会更新。让我们假设实体不断前进。我希望能够将实体的角度赋予使其朝该方向移动的功能: moveForward(90);应该使它们向右移动。如果我宣布轮换为global int,那么 moveForward(rotation); rotation++; 会使它的运动跟踪一个小圆圈。 我怎样才能做到这一点?我认为这涉及向量数学。我什么都不知道,所以简短的解释会很好。

2
如何在六角形网格上旋转六角形瓷砖的结构?
我的2D等距游戏使用六角形网格图。参考下图,如何将浅蓝色六边形结构围绕粉红色六边形旋转60度? 编辑: 主十六进制是(0,0)。其他十六进制是孩子,他们的数目是固定的。我将只定义一个位置(在本例中为右),并根据需要计算其他方向(左底,右底,右上,左上和左)。其他十六进制定义为:Package.Add(-1,0),Package.Add(-2,0),依此类推。 switch(Direction) { case DirRightDown: if(Number.Y % 2 && Point.X % 2) Number.X += 1; Number.Y += Point.X + Point.Y / 2; Number.X += Point.X / 2 - Point.Y / 1.5; break; } 在这段代码中,Number是主要的十六进制,Point也是我要旋转的十六进制,但是它不起作用:

5
为什么在Vector3s中不能使用运算符'> ='?
我正在尝试获得一个矩形,以便在我称为_positionA和的两个位置之间移动_positionB。两者都是类型Vector3。矩形移动得很好。但是,到达时_positionB它不会像应该的那样朝相反的方向移动。 我回到代码中看一看。我得出的结论是,随着对象的移动,if代码中的语句错过了rects位置等于的框架_positionB。如果rects的位置大于或等于, 我决定将代码修改为反向_positionB。我的代码不太长,因此我将在下面显示它: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

3
绑带旋转镜
我使用以下代码旋转游戏角色以观看目标: transform.rotation = Quaternion.Slerp(startQuaternion, lookQuaternion, turningNormalizer*turningSpeed/10f) startQuaternion是给定新目标时角色的当前旋转。 lookQuaternion是角色应查看的方向,其设置如下: destinationVector = currentWaypoint.transform.position - transform.position; lookQuaternion = Quaternion.LookRotation(destinationVector, Vector3.up); TurningNormalizer只是Time.deltaTime增加,并且turningSpeed是编辑器中给定的静态值。 问题在于,尽管角色在大多数情况下都应该旋转,但在必须接近180度时仍存在问题。然后它有时会抖动并镜像旋转: 在此绘制效果不佳的图像中,角色(右侧)开始转向左侧的圆圈。不仅仅是左右旋转,它还可以启动“镜舞”: 它开始向新面貌旋转 然后突然突然以相同的角度但在另一侧并继续旋转 它执行此“镜像”的时间很长,直到它看着目标为止。这是带有四元数的东西吗? 编辑1: 显然问题不是由旋转本身引起的。更有可能的问题是,角色在旋转时会朝着面部移动。作为限制角度,当允许角色移动时,面对和目标之间的角度会减少,并且有时会消除抖动/镜像旋转。 这当然引发了更多的问题,为什么角色不能同时没有问题地同时移动和旋转呢?机芯使用的代码: transform.Translate(Vector3.forward * runningSpeed/10f * Time.deltaTime);

2
如何模拟摆动摆?
我想模拟一根带有重物的绳索,像钟摆一样来回摆动。任何实际的物理学都是矫kill过正。只是不断地重复相同的动作。 jQuery具有与我正在寻找的类似的“摇摆”缓解。它是如何工作的? 我本来是想用来从一个角度旋转到另一个角度Math.easeOutExpo,但是真正的摆锤的摆放方式却有所不同...

4
保持两个物体之间的旋转
在我的XNA游戏中,我有两个碰撞的对象。当第一个物体与另一个物体碰撞时,它可以锁定在其上并在整个世界中移动。我这里的数学有问题(数学不是我的强项)。目前,我将第二个对象闩锁放在第一个对象闩锁上并随其移动,但是我无法使其保持其原始方向。因此,如果对象朝上,则应相对于与原始项目一起旋转的方向保持该方向。 关于如何最好地实现这一目标的任何提示?
9 xna  rotation 

1
Xbox指拨杆用于旋转精灵,基本公式使其以90度的间隔“粘”或“粘”!您如何顺利旋转?
我正在使用一个非常基本的公式来计算我的精灵(例如太空船)应基于Xbox控制器指尖所面对的角度,即您使用指尖来旋转飞船。 在我的主要更新方法中: shuttleAngle = (float) Math.Atan2(newGamePadState.ThumbSticks.Right.X, newGamePadState.ThumbSticks.Right.Y); 在我的主要绘制方法中: spriteBatch.Draw(shuttle, shuttleCoords, sourceRectangle, Color.White, shuttleAngle, origin, 1.0f, SpriteEffects.None, 1); 如您所见,它非常简单,我从指尖获取当前弧度并将其存储在浮子中shuttleAngle,然后将其用作旋转角度参数(以弧度为单位)以绘制往复运动。 由于某些原因,当我旋转Sprint时,它在0、90、180和270度的角度感觉发粘。它想以这些角度解决。这并不能像在使用类似机制的游戏中那样给我流畅自然的旋转。PS:我的Xbox控制器很好!
9 xna  c#  sprites  rotation  gamepad 

3
我可以使用四元数来控制直升机吗?
我正在尝试在3D模式下进行简化的直升机(目前是立方体)仿真,并且在旋转方面遇到一些问题。直升机可以沿三个轴旋转: 使用后螺旋桨自行旋转:y轴旋转 左右倾斜以向左或向右移动:z轴旋转 上下倾斜以向后或向前:x轴旋转 我需要能够分别控制每个轴。到目前为止,我已经尝试过使用欧拉角,但是无论使用哪种旋转顺序,我都会碰到万向节锁或某些轴“切换位置”。 我似乎需要使用四元数,但是我不知道如何控制每个单独的轴,因为四元数使用方向和角度。我应该创建三个四元数并将它们相乘吗?我会不会遇到同样的问题? 奇怪的是,如果我用手指来代表直升机的三个轴(竖起= y,索引= z,中间= x),我似乎没有遇到这些问题。为什么?
9 3d  rotation 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.