Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

スプライトを使うサンプルコード(Cocos Code IDE, Lua言語)

More than 5 years have passed since last update.

Cocos Code IDEを使ってLua言語でスプライトを使う方法をまとめました。

実行環境、IDE Cocos2d-xバージョン 言語
Cocos Code IDE Mac OS X 1.0.0-RC2 Cocos2d-x V3.2 Lua言語

サンプルコード

プロジェクトの新規作成で作成されるGameScene.luaのGameScene.create()を書き換えます。

画像ファイルからスプライトを作成して位置を指定、シーンに追加して表示します。

function GameScene.create()
    local scene = GameScene.new()

    local sprite = cc.Sprite:create("image.png")
    sprite:setPosition(100, 100)
    scene:addChild(sprite)

    return scene
end

画像ファイル名をimage.pngとしています。resディレクトリにimage.pngを置いておきます。

テクスチャから作成

local texture = cc.Director:getInstance():getTextureCache():addImage("texture.png")
local sprite = cc.Sprite:createWithTexture(texture, cc.rect(0, 0, 64, 64))

スプライトフレームから作成

local texture = cc.Director:getInstance():getTextureCache():addImage("texture.png")
local spriteFrame = cc.SpriteFrame:createWithTexture(texture, cc.rect(0, 0, 64, 64))
local sprite = cc.Sprite:createWithSpriteFrame(spriteFrame)    

スプライトを画面の中央に表示したい

local visibleSize = cc.Director:getInstance():getVisibleSize()
sprite:setPosition(visibleSize.width / 2, visibleSize.height / 2)

スプライトのサイズを取得

local size = sprite:getContentSize()
-- size.widthで幅、size.heightで高さがわかる

スプライトの位置を取得

local x = sprite:getPositionX()
local y = sprite:getPositionY()
-- または、
local pos = cc.p(sprite:getPosition()) -- pos.xとpos.yでX座標、Y座標がわかります。
-- または、
local x, y = sprite:getPosition()

拡大・縮小・回転・反転

-- 2倍に拡大
sprite:setScale(2.0)
-- X方向に半分に縮小
sprite:setScaleX(0.5)
-- 時計回りに45度回転
sprite:setRotation(45)
-- X方向に反転
sprite:setFlippedX(true)

シーンへ追加、削除

-- Zオーダーを指定してレイヤへ追加
scene:addChild(sprite, 10)
-- レイヤから削除
sprite:removeFromParent()

実際はレイヤーを作成してその上に配置することが多いでしょうが、レイヤーの場合でも同じです。

名前をつける

-- 名前をつける
sprite:setName("name1")
-- 名前をつけたスプライトを取得する
local name1Sprite = scene:getChildByName("name1")

タグをつける

-- タグをつける
sprite:setTag(10)
-- タグを指定してスプライトを取得する
local name1Sprite = scene:getChildByTag(10)

Z座標を指定する

sprite:setPositionZ(1)

表示・非表示

sprite:setVisible(true)

falseで非表示

透明度

-- 半透明
sprite:setOpacity(255/2)
-- 透明
sprite:setOpacity(0)

アンカーポイントの変更

-- 中央(デフォルト)
sprite:setAnchorPoint(0.5, 0.5)
-- 左上
sprite:setAnchorPoint(0, 1)

スプライト同士の交差を調べる

local result = cc.rectIntersectsRect(sprite1:getBoundingBox(), sprite2:getBoundingBox())

交差しているとtrueが返ります。

点がスプライトに含まれるかを調べる

local position = cc.p(100, 100)
local result = cc.rectContainsPoint(sprite:getBoundingBox(), position)

点がスプライトのバウンディングボックス内にあるとtrueが返ります。

スプライトに独自のデータを設定する

サンプルのソースを見ると、sprite.isPaused = falseなどとしていたので、適当にピリオドのあとにユーザー変数を作れるのだと思います。

パラパラ漫画のアニメーション

長くなるので別記事で 投稿予定 です。
投稿しました。パラパラアニメーション基本(Cocos Code IDE, Lua言語)を参照してください。

senchan05
iPhoneアプリ、Macアプリ、Webアプリの開発を行っています。
http://senchan-office.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away