LoginSignup
4
4

More than 5 years have passed since last update.

アクションの基本(Cocos Code IDE, Lua言語)

Last updated at Posted at 2014-09-15

Cocos Code IDEを使ってLua言語で、アクションを扱う基本です。

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

サンプルコード

プロジェクトを新規作成で作成します。(FileメニューのNew->Cocos Lua Project...から作成できます。)
プロジェクト名は適当につけてください。画面は縦画面(portrait)を指定します。

main.luaファイルを修正します。

main.lua/26行目
cc.Director:getInstance():getOpenGLView():setDesignResolutionSize(320, 480, 0) -- 縦画面用に(480, 320, 0)から(320, 480, 0)に変更
main.lua/31行目
--gameScene:playBgMusic() --使わないのでコメントアウト

GameScene.luaを書き換えます。

GameScene.lua
require "Cocos2d"
require "Cocos2dConstants"

local GameScene = class("GameScene",function()
    return cc.Scene:create()
end)

function GameScene.create()
    local scene = GameScene.new()
    local visibleSize = cc.Director:getInstance():getVisibleSize()

    -- スプライトを作成
    local sprite = cc.Sprite:create("character.png")
    sprite:setPosition(0, 0)
    scene:addChild(sprite)

    -- アクションを実行
    local action = cc.MoveTo:create(3, cc.p(visibleSize.width/2, visibleSize.height/2))
    sprite:runAction(action)

    return scene
end

return GameScene

適当な画像をcharacter.pngのファイル名でresディレクトリに加えてください。
実行すると、(0,0)から画面中央まで3秒かけてスプライトが移動します。

移動系

Cocos2d-xにはいろいろなアクションが用意されています。ここでは移動に関するアクションの例を示します。

移動する

MoveTo、MoveByを使います。 MoveToはその座標まで、MoveByは現在の座標から指定した座標を加えて移動します。

local action = cc.MoveTo:create(3, cc.p(100, 100))
sprite:runAction(action)

回転する

RotateTo、RotateByを使います。RotateToは指定した角度まで最短方向で回転、RotateByでは現在の角度から値を加えて回転します。

local action = cc.RotateTo:create(3, 45) -- 3秒かけて45度回転
sprite:runAction(action)

ちなみにcreate(3, 720, 0)のように引数を3つにすると、3D座標でX軸中心の回転やY軸中心の回転を行えますが、ここでは割愛します。

拡大縮小

ScaleTo、ScaleByを使います。

local action = cc.ScaleTo:create(3, 2) -- 3秒かけて2倍に拡大
sprite:runAction(action)

ジャンプ

JumpTo、JumpByを使います。
アクションの時間、移動先の座標、ジャンプの高さ、ジャンプの回数をcreateメソッドの引数に指定します。

local action = cc.JumpTo:create(3, cc.p(300, 300), 50, 5) -- 3秒間、(300,300)へ移動、高さ50、ジャンプ5回
sprite:runAction(action)

アクションを連続で実行したり、同時に実行したり、繰り返す、停止する

ここでは複数のアクションを扱う方法や、アクションの停止などの例を示します。

連続してアクションを実行する

複数のアクションを連続して実行するには、Sequenceを使います。

local action1 = cc.MoveTo:create(3, cc.p(100, 100))
local action2 = cc.RotateTo:create(3, 45) -- 3秒かけて45度回転
local sequence = cc.Sequence:create(action1, action2)
sprite:runAction(sequence)

この例では、(100,100)へ移動後に45度回転します。

同時並行でアクションを実行する

複数のアクションを同時並行で実行するには、Spawnを使います。

local action1 = cc.MoveTo:create(3, cc.p(100, 100))
local action2 = cc.RotateTo:create(3, 45) -- 3秒かけて45度回転
local spawn = cc.Spawn:create(action1, action2)
sprite:runAction(spawn)

この例では(100,100)へ45度回転しながら移動します。

アクションを繰り返す

アクションを繰り返すにはRepeat、RepeatForeverを使います。
Repeatは繰り返す回数を指定します。
RepeatForeverは無限に繰り返します。

local action = cc.RotateBy:create(1, 45) -- 1秒かけて45度回転
local repeatAction = cc.Repeat:create(action, 3) -- 3回繰り返す
sprite:runAction(repeatAction)

アクションを停止する

アクションを止めるにはノードのstopAllActionsメソッドやstopActionメソッドを使います。

-- すべてのアクションを停止する
sprite:stopAllActions()
-- 特定のアクションを停止する
sprite:stopAction(action)

一時的にアクションを止めたり、再開する

アクションを一時的に止めたり、再開するにはノードのpauseメソッドやresumeメソッドを使います。

-- アクションを一時停止する
sprite:pause()
-- アクションを再開する
sprite:resume()

その他

よく使いそうなその他のアクションです。

フェードイン・フェードアウト

FadeIn、FadeOut、FadeToを使います。
FadeInは透明の状態から徐々に現れます。最初にスプライトを透明にしておく必要があります。
FadeOutは徐々に透明になります。
FadeToは指定した透明度へ変化します。

sprite:setOpacity(0)
local action = cc.FadeIn:create(3) -- 3秒かけて出現する
sprite:runAction(action)

画像の反転

X方向、またはY方向に画像を反転するには、FlipX、FlipYを使います。

local action = cc.FlipX:create(true)
sprite:runAction(action)

(通常は他のアクションと組み合わせて使います。アクションを使わずに、ただ反転するならsprite:setFlippedX(true)を使います。)

表示、非表示

Showを使うと表示、Hideを使うと非表示です。

local action = cc.Hide:create()
sprite:runAction(action)

ToggleVisibilityは表示・非表示を切り替えます。

local action = cc.ToggleVisibility:create()
sprite:runAction(action)

(これも通常は他のアクションと組み合わせて使います。)

逆方向のアクションを得る

作成したアクションの逆の動作を得るにはreverseメソッドを使います。
(すべてのアクションで、逆の動作を得られるわけではありません。)

local action = cc.RotateBy:create(3, 45) -- 3秒かけて45度回転
sprite:runAction(action:reverse())

一定時間待機する

何もしないで一定時間待機するには、DelayTimeを使います。Sequenceと組み合わせて使うことが多いです。

local action1 = cc.DelayTime:create(3) -- 3秒待機
local action2 = cc.RotateTo:create(3, 45) -- 3秒かけて45度回転
local sequence = cc.Sequence:create({action1, action2})
sprite:runAction(sequence)

アクションの実行で、関数を呼び出す

CallFuncを使います。Sequenceと組み合わせて使うことが多いと思います。

-- 呼ばれる関数を準備
local function func(node)
    print("funcが呼ばれました。")
end

-- アクションを実行
local action = cc.RotateTo:create(3, 45) -- 3秒かけて45度回転
local callFunc = cc.CallFunc:create(func)
local sequence = cc.Sequence:create({action, callFunc})
sprite:runAction(sequence)

引数にテーブルのデータを渡すこともできます。

local function func(node, value)
end

local value = {}
local callFunc = cc.CallFunc:create(func, value)

自身を削除する

自身を削除するにはRemoveSelfを使います。これも単体で使うことはなく、他のアクションと組み合わせて使うことになります。

local action = cc.RotateTo:create(3, 45) -- 3秒かけて45度回転
local remove = cc.RemoveSelf:create()
local sequence = cc.Sequence:create({action, remove})
sprite:runAction(sequence)

この例では、3秒かけて45度回転した後、自身のスプライトを削除します。


その他のアクション

その他、アクションについてこちらのサイトにまとめましたので、よかったら参考にしてください。
アクションを利用する - Cocos Code IDEでゲームを作る 逆引き辞典for Lua

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4