サンプル
 

■このサンプルでは、キャラクターを移動させます。

Move

■まず、Cyber Libraryをダウンロードしてください。

■Visual C#を起動し、Cyberソリューションファイルを開いてください。

■[表示>ソリューションエクスプローラ]メニューを選択し、ソリューションエクスプローラで、「Cyber.cs」を右クリックして[コード表示]メニューを選択します。

キャラクターのコードに、以下の赤字の部分を追加します。

namespace Cyber
{

public class Cyber : Form
{
const int MAIN_SCREEN = 0;
private int screen;
private bool changeScreen = true;

private Cyber3D cyber3D = new Cyber3D();
private CyberTimer timer = new CyberTimer();
private CyberInput input = null;
private Character character = new Character();
private int keyUp,keyDown,keyLeft,keyRight;

(中略)

bool Initialize()
{
if ( !cyber3D.Create(this,false,true) ) // Immediateモードに
return false;
input = new CyberInput(this);

// キャラクターの読み込み
character.LoadC3DFile(cyber3D.device,"Girl\\","Girl.c3d");

return true;
}

protected override void Dispose(bool Disposing)
{
base.Dispose(Disposing);

cyber3D.Dispose();

character.Dispose();
}

(中略)

private void MainScreen()
{
// 画面が切り換わった直後の場合
if ( IsScreenChanged() )
{
// キャラクターを0〜60コマまで速度1倍でアニメーションをループ再生
character.SetAnimation(0,60,1,true);
}

input.GetInputState(Key.Up,ref keyUp);
input.GetInputState(Key.Down,ref keyDown);
input.GetInputState(Key.Right,ref keyRight);
input.GetInputState(Key.Left,ref keyLeft);

if ( keyUp == CyberInput.PUSH_KEY || keyUp == CyberInput.HOLD_KEY )
character.move.Z = -500;
else if ( keyDown == CyberInput.PUSH_KEY || keyDown == CyberInput.HOLD_KEY )
character.move.Z = 500;
else
character.move.Z = 0;
if ( keyLeft == CyberInput.PUSH_KEY || keyLeft == CyberInput.HOLD_KEY )
{
character.rotate.Y -= 150*timer.frameTime;
}
if ( keyRight == CyberInput.PUSH_KEY || keyRight == CyberInput.HOLD_KEY )
{
character.rotate.Y += 150*timer.frameTime;
}
float radian = Geometry.DegreeToRadian(character.rotate.Y);
Vector3 pos = character.GetPos();
pos.X += (float)(Math.Sin(radian)*character.move.Z*timer.frameTime);
pos.Z += (float)(Math.Cos(radian)*character.move.Z*timer.frameTime);
character.transform = Matrix.RotationY(radian)
*Matrix.Translation(pos);

// レンダリング開始
cyber3D.BeginScene();

// カメラ位置
cyber3D.SetCamera(new Vector3(0,0,-1000),new Vector3(0,0,0));

// キャラクターの描画
character.Draw(cyber3D.device,timer.frameTime);

// レンダリング終了
cyber3D.EndScene();
}
}
}

■カーソルキーの上下で前進・後退し、左右で左右に旋回します。

■Character.transformプロパティに移動・回転・スケールの変換行列などをかけて入力して初めて、キャラクターのトランスフォームがセットされます。



戻る