任天堂のWii (ウィー) をもらった。
# Wii 本体は Amazon.co.jp: Wii よりも近所のゲーム屋のほうが安かった。
せっかくなのでWiiリモコンをブンブン振り回したいと思って、やけに安くなっていたゲーム「ドラゴンクエストソード」を買ってみた。
アマゾンで新品が定価の半額以下というのがおそろしい。
Amazon.co.jp: ドラゴンクエストソード 仮面の女王と鏡の塔
やってみた感じでは、たしかにブンブン振って楽しめるけど、もっと自由に振り振りしたかった。
格闘ゲームのコマンドのような感じで、振り方によって技が出るとか。そういうのを期待してた。
せっかくなのでインターネットチャンネルでいろいろやってみたい
と思ったけど、あまりやりたいことがない。
でも、ドラクエソードっぽいことがやりたくなったので、とりあえずFlashでそれっぽいものを作ってみた。
Flash上でマウスを振ると太刀筋っぽい閃光が走る (縦横斜めに正規化):
音は TAM Music Factory のフリー素材 sound se03.wav を使わせていただいた。サウンド、カコイイ。
しかし、残念ながら Wii 上では動作せず。
何か Flash のバージョンとかの問題かなぁ。
ソースコード (Slash.as)
package {
import flash.display.*;
import flash.events.*;
import flash.filters.*;
import flash.media.*;
import flash.text.*;
import flash.utils.*;
import mx.core.*;
[SWF(width="780", height="380", backgroundColor="#000000", frameRate="30")]
public class Slash extends Sprite {
// sound se03.wav by TAM Music Factory (http://www.tam-music.com/)
[Embed(source="se.mp3")]
private var Sound:Class;
private var mySound:SoundAsset = new Sound() as SoundAsset;
private var MAX_X:Number = 780;
private var MAX_Y:Number = 380;
private var preMouseX:Number = 0.0;
private var preMouseY:Number = 0.0;
private var message:TextField;
private var frameLines:Shape;
private var slashShape:Shape;
public function Slash() {
var myFilters:Array = new Array();
myFilters.push(new GlowFilter(0x00FFFF, 0.5, 5, 5, 3, BitmapFilterQuality.HIGH, true, false));
this.filters = myFilters;
frameLines = new Shape();
frameLines.graphics.lineStyle(2, 0x0000ff);
frameLines.graphics.moveTo( 0, 0);
frameLines.graphics.lineTo(MAX_X, 0);
frameLines.graphics.lineTo(MAX_X, MAX_Y);
frameLines.graphics.lineTo(MAX_X, 0);
frameLines.graphics.lineTo( 0, 0);
addChild(frameLines);
slashShape = new Shape();
addChild(slashShape);
// 表示メッセージのスタイル
var format:TextFormat = new TextFormat();
format.bold = false;
format.italic = false;
format.size = 10;
format.underline = false;
format.font = "_等幅";
// 表示メッセージ
message = new TextField();
message.text = "(x,y)=(0.0,0.0)";
message.autoSize = TextFieldAutoSize.LEFT;
message.selectable = false;
message.setTextFormat(format);
message.textColor = 0xFFFFFF;
addChild(message);
// タイマーで定期的にイベントを発生させる
var timer:Timer = new Timer(300,0);
timer.addEventListener(TimerEvent.TIMER, onTimer);
timer.start();
}
private function onTimer(evt:TimerEvent):void {
var x:Number = mouseX;
var y:Number = mouseY;
var diffX:Number = x - preMouseX;
var diffY:Number = y - preMouseY;
var right:Boolean = false;
var left :Boolean = false;
var down :Boolean = false;
var up :Boolean = false;
if(diffX > MAX_X/2){
right = true;
}
if(diffX < -MAX_X/2){
left = true;
}
if(diffY > MAX_Y/2){
down = true;
}
if(diffY < -MAX_Y/2){
up = true;
}
if(right){
if(down){
doSlash(0, 0, MAX_X, MAX_Y);
}else if(up){
doSlash(0, MAX_Y, MAX_X, 0);
}else{
doSlash(0, MAX_Y/2, MAX_X, MAX_Y/2);
}
}else if(left){
if(down){
doSlash(MAX_X, 0, 0, MAX_Y);
}else if(up){
doSlash(MAX_X, MAX_Y, 0, 0);
}else{
doSlash(MAX_X, MAX_Y/2, 0, MAX_Y/2);
}
}else{
if(down){
doSlash(MAX_X/2, 0, MAX_X/2, MAX_Y);
}else if(up){
doSlash(MAX_X/2, MAX_Y, MAX_X/2, 0);
}else{
slashShape.graphics.clear();
}
}
preMouseX = x;
preMouseY = y;
message.text = "(x,y)=(" + x + "," + y + ")";
}
private function doSlash(x1:Number, y1:Number, x2:Number, y2:Number):void {
var channel:SoundChannel = mySound.play();
slashShape.graphics.clear();
slashShape.graphics.lineStyle(10, 0xFFFFFF);
slashShape.graphics.moveTo(x1,y1);
slashShape.graphics.lineTo(x2,y2);
}
}
}
Slash-config.xml
<flex-config>
<output>slash.swf</output>
<default-size>
<width>400</width>
<height>400</height>
</default-size>
<default-frame-rate>30</default-frame-rate>
<default-background-color>0x000000</default-background-color>
<use-network>true</use-network>
<benchmark>true</benchmark>
<compiler>
<incremental>true</incremental>
<source-path>
<path-element>libs/</path-element>
</source-path>
</compiler>
</flex-config>
# Flex 2 SDK にてコンパイル。
ドラゴンクエストソード参考動画
剣筋は細い線からだんだん太くなって、細くなって消えていく感じ?
ドラゴンクエストソードって、企画はジニアス・ソノリティ で、開発はエイティング ということで、スクウェア・エニックスは販売ってところなのかな。 「ドラクエ」シリーズに携わった山名学氏が新会社「ジニアス・ソノリティ」を設立。任天堂とポケモンが出資 という記事もあるので、いちおう元々の関係者ばかりだとは思うけど、ブランドと制作者が離れていく雰囲気。
追記: 2007-10-18
Flex 2 SDK ではダメっぽいので MTASC で 似非ドラゴンクエストソード で挽回。
tags: zlashdot Flash Flash Flex Game Wii
Posted by NI-Lab. (@nilab)