• ベストアンサー

objective-c テクスチャアトラスについて

sprite kitのフレームワークで利用出来るテクスチャアトラスという機能があるかと思うのですがこの機能をuikit上でうまく利用することは可能でしょうか? 目的としてるのはシューティングゲームなどで敵がやられて爆発などをpng画像のようなものでパラパラアニメーションをしたいのですがimageview上でやるときちんと再現されずどうすればよいか困っております。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

SKViewを作ってその中でSpriteKitを使い、 そのSKViewをUIViewに貼り付ければよいです。 http://mpon.hatenablog.com/entry/2015/02/18/004754 が参考になると思います。

関連するQ&A

  • i phoneのゲームを探しています。

    2,3年前にやってたんですがタイトルを忘れてApp Storeでひたすら探したんですが一向に見つかりません・・・。ゲームの特徴が、モーションセンサー?(傾きを利用した昨日)で操作して弾をひたすら避けながら出現したアイテムを取りつつ敵を倒してスコアを稼ぐというゲームです。シューティングゲームとはまた違った感じで4種類(爆発、氷、追跡、レーザー?)の武器が画面上に出現するんですが どなたかプレイしたことある人いないですか?

  • matter.jsのテクスチャーについての質問

    matter.jsを学び始め、 matter.jsの基本的な機能を使ったサンプル集 https://mmsrtech.com/entry/2022/10/16/210254 このサイトのサンプルを参考にさせていただき、勉強しています。 サンプルの中の オブジェクトの表示切り替え、削除、総数のカウント のコードを触りながらいろいろ試しています。 サンプルの2か所を変更して、クリックで生成される円の半径を15に固定して、テクスチャーを張ろうとしてるのですが、テクスチャーが貼れません。何も反応しなくなります。どのようにすれば、テクスチャーが貼れますか? // 使用モジュール const Engine = Matter.Engine, Render = Matter.Render, Runner = Matter.Runner, Body = Matter.Body, Bodies = Matter.Bodies, Composite = Matter.Composite, Composites = Matter.Composites, Vector = Matter.Vector, Constraint = Matter.Constraint, MouseConstraint = Matter.MouseConstraint, Mouse = Matter.Mouse, Events = Matter.Events; // エンジンの生成 const engine = Engine.create(); // 物理演算canvasを挿入する要素 const canvas = $('#canvas-area')[0]; // レンダリングの設定 const render = Render.create({ element: canvas, engine: engine, options: { width: 800, height: 600, } }); // マウス、マウス制約を生成 const mouse = Mouse.create(canvas); const mouseConstraint = MouseConstraint.create(engine, { mouse: mouse, constraint: { render: { visible: false } } }) Composite.add(engine.world, mouseConstraint) render.mouse = mouse // レンダリングを実行 Render.run(render); // エンジンを実行 Runner.run(engine); /** * 以下、各例毎に処理を記述する */ $('body').append('<p class="body-counter">Number of balls : <span></span></p>'); $('body').append('<button>Clear</button>'); // ボール用Compositeを生成する【⑬】 const ballComposite = Composite.create(); Composite.add(engine.world, ballComposite); // 静止オブジェクト(空中の床と画面外落下判定オブジェクト)【⑭】 const floor = Bodies.rectangle(400, 400, 500, 30, { isStatic: true }); const pit = Bodies.rectangle(400, 900, 50000, 30, { isStatic: true, label: 'pit' }); Composite.add(engine.world, [floor, pit]); // クリックした位置に円を生成とballCompositeへの追加 Events.on(mouseConstraint, 'mousedown', e => { // ドラッグ中は生成しない if (mouseConstraint.body) { return } // 半径はランダム(10〜30) //const min = 10; //const max = 30; //ここを変更/////////////////////////////////////////////////////////////// const radius = 15; ///////////////////////////////////////////////////////////////////////////// const ball = Bodies.circle( e.mouse.position.x, e.mouse.position.y, radius, { restitution: 0.5 }, //ここを変更//////////////////////////////////////////////////////////// render: { sprite: { texture: 'img/ball.png'}} ////////////////////////////////////////////////////////////////////////// ); Composite.add(ballComposite, ball); }); // Engineモジュールに対するイベント/衝突の発生を検知する【⑮】 Events.on(engine, 'collisionStart', e => { $.each(e.pairs, (i, pair) => { // 画面外落下判定オブジェクトに衝突したボールを削除する if (pair.bodyA.label === 'pit') { Composite.remove(ballComposite, pair.bodyB); } }) }); // Compositeへのオブジェクト追加を検知してボール総数の表示を更新する【⑯】 Events.on(ballComposite, 'afterAdd', e => { // Eventオブジェクトを直接参照してCompositeに含まれる全bodyを取得 $('p.body-counter span').text(e.source.bodies.length); }); // Compositeからのオブジェクト削除を検知してボール総数の表示を更新する【⑯】 Events.on(ballComposite, 'afterRemove', () => { // Composite#allBodies()を利用してCompositeに含まれる全bodyを取得 $('p.body-counter span').text(Composite.allBodies(ballComposite).length); }); $('button').on('click', () => { // ボールを一括削除する【⑰】 Composite.clear(ballComposite); $('p.body-counter span').text(0); })

  • objective-c

    初心者です。よかったら、どなたかお答えをおねがいします。 #import <Foundation/Foundation.h> int main (void) { const char *words[] = {"asldkfj",";ljasdf",";lkasj","ioisdji"}; /ここ/ int charsize; charsize = sizeof(words) / sizeof(words[0]); int i; for(i = 0; i < charsize ;i++){ NSLog(@"%s is %d characters long",words[i],strlen(words[i])); } return 0; } 上記のソースでは、wordsがポインタ変数になってますが、配列で、 const char words[] = {"asldkfj",";ljasdf",";lkasj","ioisdji"}; にするとエラーがでます。 配列にすると、要素数は判別できるが、文字数は判別できないってことでしょうか? そうだとしたら、理由を教えてください。 よろしくお願いします。

  • Objective-Cについて

    今、Objective-Cを独学で勉強しているのですが、 プログラムで int a1; int a2; int b1 = 1; int b2 = 1; a1 = ++b1; a2 = b2++; NSLog(@"変数a1の値は%dです\n", a1); NSLog(@"変数a2の値は%dです\n", a2); NSLog(@"変数b1の値は%dです\n", b1); NSLog(@"変数b2の値は%dです\n", b2); これで「Run」を押すとそれぞれ、 「変数a1の値は2です」 「変数a2の値は1です」 「変数b1の値は2です」 「変数b2の値は2です」 とOutputされるのですが、この時なぜ「a2」が1と出てくるのか分かりません。 どなたか解説お願いします。

  • objective-cについて教えてください。

    以前にhtml5のcanvasに写真を読み込み、写真の一部を消したり、ペイントしたりするものを作ったのですが、それをobjective-cで作ろうしています。 [IOS]CoreGraphicsでお絵描きアプリhttp://realisapp.com/iphone/coregraphics-paint/を参考にしています。写真を読み込む部分を付け足したいのですが、どのようにすればいいのでしょうか?写真を読み込んでペイント用のレイヤーを重ねるのではなく、読み込んだ写真に直接ペインとしたり、消したりしたいと考えています。以上のような内容について教えていただきたく思い投稿しました。よろしくお願いします。

  • objective-cで困っています教えてください

    下記のようにUIViewの上にUIImageViewを配置し、そこにUIImageをUIViewContentModeScaleAspectFitで表示させています。 表示している画像タップして、座標をとりたいと考えています。 UIImageView(UIImage)上だけをタップのエリアにしたいのですが、画面全体がタップのエリアになってしまいます。また、画像のアスペクト比を維持しUIImageViewサイズに収まるように表示しているので、タップでとれたUIImageView上の座標と、画像上の座標にズレができてしまいます。UIImageViewサイズに収まるように表示された画像上の位置から元の画像の座標を取得する方法を教えてください。 #import "ViewController.h" @interface ViewController (){ UIImageView *imageView; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. CGRect rect = CGRectMake(0,20, 360, 480); imageView = [[UIImageView alloc] initWithFrame:rect]; imageView.backgroundColor = [UIColor redColor]; //画像のアスペクト比を維持しUIImageViewサイズに収まるように表示 imageView.contentMode = UIViewContentModeScaleAspectFit; UIImage *image = [UIImage imageNamed:@"hoge.png"]; [imageView setImage:image]; [self.view addSubview:imageView]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } /** * タッチされたとき */ - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { CGPoint p = [[touches anyObject] locationInView:imageView]; float x = p.x; // X座標 float y = p.y; // Y座標 NSLog(@"タップ開始 %f, %f", x, y); } @end

  • objective-cについて教えてください。

    UIImageとCGImageの違いについて調べて、 http://nadegiri.main.jp/?p=61 などを読んだのですが、理解できませんでした。違いや、使い方など教えてください。

  • objective-c

    androidではテキストボックスなどがある画面デザインは主にXMLを使って表示するが objective-cは主にどのようにして画面デザインを表示するのでしょうか。

  • objective-cで困っています。

    objective-cをトライ&エラーで試しながら学習しているのですが、 下記の内容で行き詰っており、知恵をお借りしたいと思い投稿しました。 現在tml5のcanvasを使ってお絵描きアプリを作りました。このcanvasに書き込んだデータをiPhoneのカメラロールに保存することをトライしています。いろいろ調べてみると「HTML5 CANVASの描画内容をUIImage経由でカメラロールに保存する」という記事をみつけました。http://lab.spec5zigen.com/archives/html5-canvasの描画内容をuiimage経由でカメラロールに保存する/ その記事を参考に #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. // UIWebViewのインスタンス化 CGRect rect = self.view.frame; UIWebView *webView = [[UIWebView alloc]initWithFrame:rect]; // Webページの大きさを自動的に画面にフィットさせる webView.scalesPageToFit = YES; // デリゲートを指定 webView.delegate = self; // URLを指定 NSURL *url = [NSURL URLWithString:@"http://xxxxxxxxxxxxxxxxxxxxxx"]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; // リクエストを投げる [webView loadRequest:request]; // UIWebViewのインスタンスをビューに追加 [self.view addSubview:webView]; } - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if(![[request.URL.scheme] isEqualToString:@"sp5canvas2app"]){ return YES; } NSString * requestString = [[request URL] absoluteString]; NSArray *params = [requestString componentsSeparatedByString:@"data:image/png;base64,"]; // dataFromBase64String // NSData+Base64 Copyright 2009 Matt Gallagher. All rights reserved. // http://www.cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html NSData * decodedData = [NSData dataFromBase64String:[params objectAtIndex:1]];//decode base64 to NSData UIImage *image = [UIImage imageWithData:decodedData]; UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);//カメラロールに保存 return NO; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end としてみたのですが、 if(![[request.URL.scheme] isEqualToString:@"sp5canvas2app"]){ の行にExpected identifierというエラーが、 NSData * decodedData = [NSData dataFromBase64String:[params objectAtIndex:1]];の行にNo known class method for selector 'dataFromBase64String:'というエラーが という状況で詰っている状況です。 メソッドの定義や宣言されていないメソッドを使っているなどのエラーということを調べて分かったのですが、objective-cを始めたばかりで初歩的なミスかも知れませんがエラーの対応の仕方がまだまだよくわかっていません。 スキーマなど参考にしたサイトの内容も十分に理解しているのではないのですが、「sp5canvas2app」の部分は自由に変えていいのでしょうか? 解決の仕方を教えていただけないでしょうか? 宜しくお願いします。

  • objective-cについて

    現在objective-cを勉強中なのですが、デリゲートでつまっています。 参考書などを読むとよく「オブジェクトの処理を他のオブジェクトが代理で処理すると」とあるのですが、デリゲートを使うメリットは何なのでしょうか?

専門家に質問してみよう