0

私はアイソメトリック ゲーム (ダイヤモンド グリッド) に取り組んでおり、キャラクターの動きに関する小さな問題に遭遇しました。

A* を使用して 2 点間のパスを見つけてから、パスを形成するすべてのタイルを通過してポイント A からポイント B にキャラクターを移動したいのですが、これを行う方法が見つかりません。より簡単で正確な方法。

これまでのところ、このコードを破棄しましたが、ちょっと「さびた」です

public void Destination(tile destination)
{ 
    for (int i = 0; i < 8; i++)
    {
        if (AdjacentTile[i] == destination)
        {
            characterDirection = i; 
        }
    }
    animation.changeSpriteDirection(characterDirection); //After I found which adjacent tile is the next destination I change the character direction based on it's position (1 = North , 2 = Nort Est etc) .. so the Y of the Animation_sourceRectangle it's changed//

    Vector2 Position;
    Position.X = current_characterTile.X - destination.X;
    Position.Y = current_characterTile.Y - destination.Y;

    rotation = (float)Math.Atan2(-Position.X, Position.Y); 

    moveVector = (Vector2.Transform(new Vector2(0, -1), Matrix.CreateRotationZ(rotation))) * characterSpeed;
    movingCommand = 1; // the character is supposed to be moving..
    Move(); //this function moves the sprite until the *tile.i and tile.j* of the character is the same as tile.j and tile.i of the destination

    //something like this  
    if ( characterTile.i == destination.i && characterTile.j == destination.j) 
       movingCommand = 0 //stop
    else 
       character_Position += moveVector; 
}

誰かが私に何をすべきか、または私を助けるためのヒントを与えることができれば、私はとても感謝しています.
ありがとうございました。

4

1 に答える 1