Nahkampf

Tuesday, November 5, 2013

Nahkampf

In meinem Spiel soll es möglich sein den Gegner sobald man in einem gewissen Radius ist im Nahkampf zu treffen.


Hierfür habe ich meinem Playerobjekt ein Unterobjekt gegeben welches den Nahkampfbereich darstellt.


Sobald sich mein Gegner (die grün dargestellte Kapsel in der Mitte des blauen Rechteckes) in diesem Bereich befindet und ich die linke Maustaste drücke, wird dem Gegner ein geringer Teil der Lebenspunkte abgezogen.

if(networkView.isMine)
{
   if(Input.GetKeyDown(KeyCode.Mouse0))
   { 
      if(nahkampfColliderManager.EnemyInCollider == true)
      {
          networkView.RPC("NahkampfRPC", uLink.RPCMode.Others, "test"); 
          healthPointsEnemyLocal-= Screen.width/3*0.95f/15;             
      } 
   }
}
  
Das ganze geschieht aufgrund der if-Abfrage: if(networkView.isMine){}; nur beim eigenen Client. Damit Client Nr.2 mitbekommt, dass er geschlagen wird, kommt das Aufrufen der "NahkampfRPC"-Funktion zum Einsatz, welche durch einen RPC ausgelöst wird. Diese wird an alle anderen Clients und an den Server gesendet jedoch nicht an sich selbst.
Bei den anderen Clients wird nun folgendes passieren:

[RPC]
void fernkampfRPC(string test)
{
    healthPointsEnemyLocal-=Screen.width/3*0.95f/15;
}

Beim Gegner werden die lokalen Lebenspunkte abgezogen. So wird sowohl bei Client Nr.1 als auch bei Client Nr.2 der gleiche Lebenspunktebalken gestaucht und die Lebenspunkte sinken.

Das soll später natürlich nicht bei jedem Klicken der Maus erfolgen, sonst wäre derjenige der schneller klicken kann der Gewinner und das Spiel wäre nach wenigen Sekunden beendet. Es muss einen Timer und eventuell einen Rückschlag geben, sodass man nur in bestimmten Abständen zuschlagen kann. Dadurch wird man automatisch andere Wege zum Sieg bevorzugen.

No comments:

Post a Comment