[ios]使 opengl 游戏的移动 UIImageview,但可以让它停留在屏幕的边缘

发布时间: 2017/3/21 23:00:06
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

嗨标题前好的总结,它利用加速度计但它只是不断出屏幕,im 15 和我有一堆的问题试图让它停在 edge.here 是我查看 controller.m 文件的代码。

    #import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize person, delta;

- (void)viewDidLoad
{
    UIAccelerometer *accel =[UIAccelerometer sharedAccelerometer];
    accel.delegate = self;
    accel.updateInterval = 1.0f / 60.0f;
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

}
-(void)accelerometer:(UIAccelerometer *)accelerometer
       didAccelerate:(UIAcceleration *)acceleration{
    NSLog(@"x : %g", acceleration.x);
    NSLog(@"y : %g", acceleration.y);
    NSLog(@"z : %g", acceleration.z);

    delta.x = acceleration.y *50;
    //  delta.x = acceleration.x *8;


    person.center = CGPointMake(person.center.x + delta.x,person.center.y + delta.y );
     }


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

解决方法 1:

在更新之后 person.center 你需要限制到您的视图框架,否则它会关闭屏幕。

让你开始,这是你怎么可能阻止的人从去左边缘的视图︰

person.center = CGPointMake(person.center.x + delta.x,person.center.y + delta.y );
// add this
CGFloat leftOfWorld = 0.0f;
CGFloat minCenterX = leftOfWorld + (person.bounds.size.width / 2.0f);
person.center = CGPointMake(MAX(minCenterX, person.center.x), person.center.y);

人是在屏幕的左边时 center.x 是 (宽 / 2) 从左边缘。这是我们的最低。然后我们拿来较大的值之间的最小和 center.x 所以如果 center.x 移动下方这最低限度,我们改变它。

你可能会为其他边缘的屏幕类似的逻辑。您将需要计算的右侧和底部边缘的屏幕使用 self.view.widthself.view.height

官方微信
官方QQ群
31647020