オブジェクトを特定の座標に移動させる動作について
Unityで2Dゲームを作成しています。特定のキーを入力すると、操作キャラクターが入れ替わる機構を作成しようとしたのですが、問題が発生しています。
【想定している仕様】
1.特定のキーを入力すると、操作キャラクターと同じ座標に別のキャラクターを呼び出す(移動させる)
2.操作キャラクターはゲームに干渉しない座標に移動させ、操作を受け付けなくする
の1の仕様を作成中に行き詰まってしまいました。オブジェクトに値を保持したいため、Prefabの生成は用いていません。
【問題点】
以下のスクリプトを操作キャラクターに関係ないオブジェクトに記述したのですが、キャラクターが移動後、座標の移動を行わなくなってしまいました。(移動アニメーションや方向転換はする)
void Update()
{
if(Input.GetKeyDown(KeyCode.C))
{
PlayerNumber += 1;
currentPlayer = PlayerLife[PlayerNumber];
Debug.Log(PlayerNumber + currentPlayer);
}
//currentPlayerに応じてアクティブキャラクターのトリガーを設定,アクティブキャラクターの座標を取得
if(currentPlayer == "Warrior")
{
WarriorActive = true;
MageActive = false;
NinjaActive = false;
}
if(currentPlayer == "Mage")
{
WarriorActive = false;
MageActive = true;
NinjaActive = false;
}
if(currentPlayer == "Ninja")
{
WarriorActive = false;
MageActive = false;
NinjaActive = true;
}
//アクティブになったときに現在座標に呼び出す
if(WarriorActive == true)
{
Warrior.transform.position = new Vector3(ActiveX,ActiveY,0);
WarriorActive = false;
}
else if(currentPlayer == "Warrior")
{
ActiveX = Warrior.transform.position.x;
ActiveY = Warrior.transform.position.y;
}
if(MageActive == true)
{
Mage.transform.position = new Vector3(ActiveX,ActiveY,0);
MageActive = false;
}
else if(currentPlayer == "Mage")
{
ActiveX = Mage.transform.position.x;
ActiveY = Mage.transform.position.y;
}
if(NinjaActive == true)
{
Ninja.transform.position = new Vector3(ActiveX,ActiveY,0);
NinjaActive = false;
}
else if(currentPlayer == "Ninja")
{
ActiveX = Ninja.transform.position.x;
ActiveY = Ninja.transform.position.y;
}
キャラクターの遷移はListを作成し、キーが入力されるたびに値を順番に取り出しています。また、座標への呼び出しはbool型を用いて一回だけ作動するようにしているはずなのですが…
移動操作は
transform.position += new Vector3(0,-0.1f,0);
という記述で行っているのですが、移動先の座標を指定する際にnew Vector3を使っているのが悪さをしているのかな?といった感じです。
想定している仕様への別のアプローチや、現状発生している問題の特定や代案等、お力をお貸しいただけませんでしょうか?まだUnityを触って日が浅く、丸投げな質問になってしまうことをお許しください。