Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
2 captures
12 Jun 22 - 14 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Mergster · Oct 12, 2017 at 09:59 PM · c#rpgturn-basedturnbattle-system

Turn Order

Edit2: So I got this to work (thank you @Anonymous700 )

 public class BattleManager : MonoBehaviour {
 
     private bool turn = true;
 
     public BattleMove Player1;
 
     public BattleMove Player2;
 
 
     // Use this for initialization
     void Start () {
         Player2.ActionComplete = true;
     }
     
     // Update is called once per frame
     void Update () {
 
         if (Player1.ActionComplete == true) {
             if (turn == true) {
                 turn =! turn;
 
                     Player2.ActionComplete = false;
                     Debug.Log ("Player2Go");
                 }
             }
         if (Player2.ActionComplete == true) {
             if (turn == false) {
                 turn =! turn;
             
                 Player1.ActionComplete = false;
                 Debug.Log ("Player1Go");
             }
         }
 
 
     }
 }

However, that isn't the best way to work this...:(

EDIT:

Okay, @MaxGuernseyIII Here's my battle move script on both my players:

 using UnityEngine;
 using System.Collections;
 using UnityEngine.UI;
 
 public class BattleMove : MonoBehaviour {
 
     public Button Fight;
     public Button Stay;
 
     public bool CanFight;
     public bool CanAttack;
 
     public bool ActionComplete;
     // Use this for initialization
     void Start () {
 
         Button button = Fight.GetComponent<Button> ();
         button.onClick.AddListener (TaskOnClick);
         Button button2 = Stay.GetComponent<Button> ();
         button2.onClick.AddListener (TaskOnClick2);
 
     }
 
     void TaskOnClick(){
         if (CanAttack == true) {
             CanFight = true;
         }
     }
     void TaskOnClick2(){
         ActionComplete = true;
     }
 
         void OnCollisionStay2D(Collision2D col){
         if (col.gameObject.tag == "Enemy") {
             CanAttack = true;
             if (CanFight && CanAttack) {
                 Destroy (col.gameObject);
 
                 CanAttack = false;
                 CanFight = false;
                 ActionComplete = true;
             }
         }
             
     } 
             
 }


I'm trying to make a turn-based battle system.

So I have it when player1's turn is over, the player2's turn will begin and then it will go back to player1's turn.

Like so:

 void Update () {

     if (Player1.ActionComplete == true) {
         Player2.ActionComplete = false; //tells play two to go
         Debug.Log("Player2Go");
     }
     if (Player2.ActionComplete == true) {
         Player1.ActionComplete = false;//tells player one to go
         Debug.Log("Player1Go");
     }

     
 }

However, I can't get player1 to go after player2 went because the script keeps saying it's player2's turn as in the second line.

Sorry if this is confusing.

Comment
Add comment · Show 4
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image unit_nick · Oct 13, 2017 at 04:07 AM 0
Share

For this to work somewhere else in your code you need to set Player1.ActionComplete = true and the same for Player2 when their turn is complete. In which case there is no need to be setting any code in update.

avatar image MaxGuernseyIII · Oct 13, 2017 at 04:28 AM 0
Share

We need a lot more context. If we just pasted that into our Unity environment and, as @unit_nick suggested, made sure one of our Player scripts (for which we would need to create stubs) had its ActionComplete flag set to true, we would see these if statements behaving as they appear to be intended.

Please widen the scope of the information you offer in your question.

avatar image unit_nick · Oct 13, 2017 at 05:17 AM 0
Share

What the logic is showing us is that if the players collide you can press a button and the other player will die. Is that how you intend for it to work? I expect it isn't.

I suggest you pseudo code what you want to happen and we can go from there.

avatar image Mergster unit_nick · Oct 13, 2017 at 05:55 PM 0
Share

The players are actually on the same side! I have given them both the ability to kill monsters when they bump into them(think kinda like a strategy rpg more) Of course I'll want to $$anonymous$$us health ins$$anonymous$$d of destroying the enemy but this is just a start.

2 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by Anonymous700 · Oct 13, 2017 at 04:43 AM

make a bool variable for turn

bool Turn=true;

 if(Turn==true){
 Turn=!Turn;// it will take you to the next player
 /// write other code u want.
 }
 if(Turn==false){
 Turn=!Turn;// again taking to 1st player 
 // write other code 
 }


Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image unit_nick · Oct 13, 2017 at 04:49 AM 0
Share

problem with this code is both if statements will evaluate true.

avatar image Mergster · Oct 13, 2017 at 05:04 AM 0
Share

Sorry, this isn't working right either... Edit: Hey! Now it's working!

avatar image
0

Answer by LightWell · Oct 13, 2017 at 06:33 AM

I think you'd be a lot better off having a game manager script instead of seperately storing these variables, not only would this be a lot more flexible but it'd be a lot less of a headache in script brevity, maybe us an integer just to change the turn. something like this for the game manager:

 public GameObject[] players;
 public int turn = 0;
 
 public void changeTurn() {
    if(turn <  players.Length) {
    turn++
    } else {
    turn = 0;
    }
 }



some where in the actual player script

  public int playerNumber; // To set whether it's player 1 or 2
  public GameManager gM;
     if(gM.turn == playerNumber - 1) {   // -1 because computers count from zero. 
     // do player's turn actions
     gM.changeTurn();
     }




Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Mergster · Oct 13, 2017 at 05:57 PM 0
Share

Hmm, for some reason, this isn't working. Both player are thinking it's their turn although I have given them different numbers...?

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

411 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

Distribute terrain in zones 3 Answers

Creating an Interactable Grid for Tactics Game (C#) 1 Answer

Move object to position, perform action, move back to starting position 0 Answers

How can I pause one object's Update() until another class has performed its task? 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges