首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >旋转固定在雪碧上的Vector2

旋转固定在雪碧上的Vector2
EN

Stack Overflow用户
提问于 2016-03-05 10:41:56
回答 1查看 179关注 0票数 0

我在做一个小行星克隆,激光需要射出飞船的前部,但是当我尝试用旋转矩阵旋转矢量时,它会乱七八糟地飞到屏幕上,我需要激光从飞船的前部拍摄,并让起始点与飞船保持360度。目前,它只以90度的角度直射,当船直面东面时。

以下是我目前所拥有的:

代码语言:javascript
运行
复制
lLasers.Add(new Laser(Vector2.Transform(new Vector2((vPlayerPosition.X + 35), (vPlayerPosition.Y)), Matrix.CreateRotationZ(angle))));

角在哪里

代码语言:javascript
运行
复制
Vector2 direction = mouseLoc - vPlayerPosition;
angle = (float)(Math.Atan2(direction.Y, direction.X));

包括一些图片来更好地解释我的问题

左下角的原点

在90度直线射击

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-09 10:57:35

您正在使用Vector2.Transform()错误。第一个参数是您想要与矩阵进行转换的“引用”向量。

在您的情况下,如果您希望函数返回激光起始位置的位置,则需要将Vector2(shipWidth / 2f,0)作为参数。

因此:

代码语言:javascript
运行
复制
Vector2 laserStart = vPlayerPosition + Vector2.Transform(new Vector2(shipWidth / 2f, 0), Matrix.CreateRotationZ(angle));

然后你就可以开始从这个位置提取你的激光了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35813085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档