public void LoadResources() { terrainPos = new Vector3(-100, -7, -100); Terrain terrain = Instantiate(Resources.Load("Prefab/Terrain", typeof(Terrain)), terrainPos, Quaternion.identity, null) as Terrain; terrain.name = "terrain"; rightCoastCtrl = new CoastController("right"); leftCoastCtrl = new CoastController("left"); boatCtrl = new BoatController(); for (int i = 0; i < 3; ++i) { MyNamespace.CharacterController temp = new MyNamespace.CharacterController("priest" + i); temp.SetPosition(rightCoastCtrl.GetEmptyPosition()); temp.GetOnCoast(rightCoastCtrl); rightCoastCtrl.GetOnCoast(temp); characters[i] = temp; } for (int i = 0; i < 3; ++i) { MyNamespace.CharacterController temp = new MyNamespace.CharacterController("devil" + i); temp.SetPosition(rightCoastCtrl.GetEmptyPosition()); temp.GetOnCoast(rightCoastCtrl); rightCoastCtrl.GetOnCoast(temp); characters[i + 3] = temp; } }
public void LoadResources() { riverPos = new Vector3(0, 0.5f, 0); GameObject river = Instantiate(Resources.Load("Prefab/Water", typeof(GameObject)), riverPos, Quaternion.identity, null) as GameObject; river.name = "river"; rightCoastCtrl = new CoastController("right"); leftCoastCtrl = new CoastController("left"); boatCtrl = new BoatController(); for (int i = 0; i < 3; ++i) { MyNamespace.CharacterController temp = new MyNamespace.CharacterController("priest" + i); temp.SetPosition(rightCoastCtrl.GetEmptyPosition()); temp.myAction.GetOnCoast(temp, rightCoastCtrl); //rightCoastCtrl.GetOnCoast(temp); characters[i] = temp; } for (int i = 0; i < 3; ++i) { MyNamespace.CharacterController temp = new MyNamespace.CharacterController("devil" + i); temp.SetPosition(rightCoastCtrl.GetEmptyPosition()); temp.myAction.GetOnCoast(temp, rightCoastCtrl); //rightCoastCtrl.GetOnCoast(temp); characters[i + 3] = temp; } }
public void CharacterClicked(MyNamespace.CharacterController characterCtrl) { if (characterCtrl.character.IsOnBoat) { CoastController tempCoast = (boatCtrl.boat.Location == Location.right ? rightCoastCtrl : leftCoastCtrl); boatCtrl.GetOffBoat(characterCtrl.character.Name); actionManager.MoveCharacter(characterCtrl, tempCoast.GetEmptyPosition()); characterCtrl.GetOnCoast(tempCoast); tempCoast.GetOnCoast(characterCtrl); } else { CoastController tempCoast = characterCtrl.character.Coast; if (tempCoast.coast.Location != boatCtrl.boat.Location) { return; // Boat at another side } if (boatCtrl.GetEmptyIndex() == -1) { return; // Boat is full } tempCoast.GetOffCoast(characterCtrl.character.Name); actionManager.MoveCharacter(characterCtrl, boatCtrl.GetEmptyPosition()); characterCtrl.GetOnBoat(boatCtrl); boatCtrl.GetOnBoat(characterCtrl); } UserGUI.status = CheckGameOver(); }
public void MoveCharacter(MyNamespace.CharacterController characterCtrl, Vector3 destination) { Vector3 currentPos = characterCtrl.character.Role.transform.position; Vector3 middlePos = currentPos; //采用线段式的折线运动 //终点纵坐标小,则为从岸上船 //否则,从船上岸 if (destination.y > currentPos.y) { middlePos.y = destination.y; } else { middlePos.x = destination.x; } SSAction action1 = SSMoveToAction.GetSSMoveToAction(middlePos, characterCtrl.character.movingSpeed); SSAction action2 = SSMoveToAction.GetSSMoveToAction(destination, characterCtrl.character.movingSpeed); //动作队列完成上船或上岸动作 SSAction seqAction = SequenceAction.GetSequenceAction(1, 0, new List <SSAction> { action1, action2 }); AddAction(characterCtrl.character.Role, seqAction, this); }