gpt4 book ai didi

javascript - 当我移动图像然后应用旋转变换时,它 "teleports"返回到其原始位置

转载 作者:行者123 更新时间:2023-12-02 21:32:58 27 4
gpt4 key购买 nike

我刚刚开始使用 javascript,正在制作一个浏览器内游戏,其中可以使用 WASD 键在屏幕上移动头像,并且始终旋转以面向光标。到目前为止,一切都按预期进行,但是如果我使用键盘在屏幕上移动头像而不进行任何旋转,那么一旦我对玩家的头像图像应用旋转,它就会传送回页面上的默认位置,并且无法不再用键盘按键移动。我知道问题出在这段代码的最后一个片段中,我将旋转应用于头像,因为当我注释掉最后一行时,它永远不会被传送回来。这是我的 JavaScript:

// Gets the (x, y) position of the avatar's origin relative to top left of the screen
function getAvatarOrgPosition() {
var rect = avatar.getBoundingClientRect();
var xPos = rect.left;
var yPos = rect.top;
return {
x: xPos,
y: yPos
};
}

window.addEventListener('mousemove', rotateAvatar);

// Makes the avatar point in the direction of the cursor
function rotateAvatar(e){
var avatarX = getAvatarOrgPosition().x;
var avatarY = getAvatarOrgPosition().y;

var mouseX = getMousePosition(e).x;
var mouseY = getMousePosition(e).y;

// Finds the angle between the cursor and the avatar's position on the screen
var angle = (Math.atan((mouseY - avatarY)/(mouseX - avatarX))) * (180/Math.PI);

if(mouseX - avatarX < 0){
angle += 180;
}
var rotate = 'transform: rotate(' + angle + 'deg);';
avatar.setAttribute('style', rotate);
// Commenting out the above line fixes 'teleport' issue, but obviously doesn't allow any rotation
}

CSS 是:

#avatar{
width: 181px;
height: 70px;
position: absolute;
transform-origin: 10% 50%;
top: 265px;
left: 432px;
}

最佳答案

当您尝试应用多个 CSS 转换时,通常会发生这种情况。您使用 transform:rotate 进行旋转,并可能使用 transform:translate 进行位置。

要将它们一起应用,您需要将它们设置在同一个变换指令中,例如 transform:rotate(45deg)translate(10px, 10px)。否则浏览器仅应用最后一个。

看看this question如果您想要更详细的答案。

关于javascript - 当我移动图像然后应用旋转变换时,它 "teleports"返回到其原始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60573514/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com