gpt4 book ai didi

ios - 我怎样才能让这种小抽搐消失?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:44:04 24 4
gpt4 key购买 nike

所以我在我的SpriteKit 游戏项目 中有一个更新方法,其中根据领导跟随方向决定其他跟随角色的位置:

-(void) update {

if (_followingEnabled == YES || _isLeader == YES) {

switch (currentDirection) {
case up:
self.position = CGPointMake(self.position.x, self.position.y + speed);
// making a line of characters
if (self.position.x < _idealX && _isLeader == NO) {
self.position = CGPointMake(self.position.x + 1, self.position.y);
} else if (self.position.x > _idealX && _isLeader == NO) {
self.position = CGPointMake(self.position.x - 1, self.position.y);
}
break;
case down:
self.position = CGPointMake(self.position.x, self.position.y - speed);
// making a line of characters
if (self.position.x < _idealX && _isLeader == NO) {
self.position = CGPointMake(self.position.x + 1, self.position.y);
} else if (self.position.x > _idealX && _isLeader == NO) {
self.position = CGPointMake(self.position.x - 1, self.position.y);
}
break;
case left:
self.position = CGPointMake(self.position.x - speed, self.position.y);
// making a line of characters
if (self.position.y < _idealY && _isLeader == NO) {
self.position = CGPointMake(self.position.x, self.position.y + 1);
} else if (self.position.y < _idealY && _isLeader == NO) {
self.position = CGPointMake(self.position.x, self.position.y - 1);
}
break;
case right:
self.position = CGPointMake(self.position.x + speed, self.position.y);
// making a line of characters
if (self.position.y < _idealY && _isLeader == NO) {
self.position = CGPointMake(self.position.x, self.position.y + 1);
} else if (self.position.y < _idealY && _isLeader == NO) {
self.position = CGPointMake(self.position.x, self.position.y - 1);
}
break;
case noDirection:
// in case you want to do something for noDirection
break;
default:
break;
} // switch (currentDirection) {

} // if (_followingEnabled == YES && _isLeader == YES) {

}

_idealX_idealY 是从领导者的位置传递过来的整数(我确实将它们设置为属性..)并且跟随他的其他角色的位置是 float (如果我错了请纠正我)

我的理论:

因此,当我加或减 1 时,我的字符(float)的位置将永远不会等于 _idealX/_idealY(int) 并且语句将一遍又一遍地运行,这导致了这个Y/X 轴上的轻微“抽搐”或“晃动”(加减 1)。

所以你会更好地理解和形象化,我做了一个截图(他(领导者)身后的两个角色在移动时抽动..):

enter image description here

我该如何解决这个问题,这样追随者就不会在领导者身后“抽动”或“摇晃”???

最佳答案

我不记得确切的计算了,但一个通用的方法是尝试并确保事物与像素网格对齐以便显示。

x = floorf(x+0.5)

您将需要一个实际位置和一个绘图位置,因为如果您使用 floored 值,则在低速时将无法按预期工作。

关于ios - 我怎样才能让这种小抽搐消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21488897/

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