- Home /
 
 
               Question by 
               DissonanceMask · Aug 30, 2019 at 06:34 PM · 
                arrayvector3forloop  
              
 
              Trying to make a for loop with an array of Vector3
Greetings! Im trying to make a movement array, not positioning (just trying out new things), where if I input any of the horizontal axis, it will make index = 1, and verticals will input index = 2. [!!! I stopped at Move()!!!] If there are any suggestions with my vector3 array placement, please do let me know! My code is as follows:
 using System;
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Tank : MonoBehaviour
 {
     [SerializeField] float moveSpeed;
     [SerializeField] float padding = 1f;
     [SerializeField] GameObject bulletPrefab;
     [SerializeField] GameObject bulletSpawn;
 
     //Player Number
     [SerializeField] bool isPlayer1;
     [SerializeField] bool isPlayer2;
     [SerializeField] bool isPlayer3;
     [SerializeField] bool isPlayer4;
 
     //Direction Facing
     [SerializeField] bool isFacingUp;
     [SerializeField] bool isFacingDown;
     [SerializeField] bool isFacingLeft;
     [SerializeField] bool isFacingRight;
 
     private Vector3[] movement;
 
     // Start is called before the first frame update
     void Start()
     {
         if (isPlayer2 == true)
         {
             isFacingUp = true;
         }
 
         else if (isPlayer3 == true)
         {
             isFacingUp = true;
         }
 
         else if (isPlayer4 == true)
         {
             isFacingUp = true;
         }
         else
         {
             isFacingUp = true;
         }
     }
 
     // Update is called once per frame
     void Update()
     {
         Fire();
         Move();
         SpriteRotate();
     }
 
     private void Fire()
     {
        if(Input.GetButtonDown("Fire1"))
         {
             GameObject bullet = Instantiate(bulletPrefab, bulletSpawn.transform.position, transform.rotation) as GameObject;            
         }
     }
 
     private void Move()
     {
        movement = new[] { new Vector3(0f, 0f, 0f), new Vector3(Input.GetAxisRaw("Horizontal"), 0f, 0f), new Vector3(0f, Input.GetAxisRaw("Vertical"), 0f)};
                
 
         for (int i = 0; i < movement.Length; i++)
         {
             if(Input.GetButtonDown("Horizontal"))
             {
                 i = 1;
             }            
         }
 
        transform.position += movement[i] * moveSpeed * Time.deltaTime;                     
     }
 
     private void SpriteRotate()
     {
         if (Input.GetKey(KeyCode.W))
         {
             transform.eulerAngles = new Vector3(0, 0, 0);
             isFacingUp = true;
             isFacingDown = false;
             isFacingLeft = false;
             isFacingRight = false;
         }
         if (Input.GetKey(KeyCode.S))
         {
             transform.eulerAngles = new Vector3(0, 0, 180);
             isFacingUp = false;
             isFacingDown = true;
             isFacingLeft = false;
             isFacingRight = false;
         }
         if (Input.GetKey(KeyCode.A))
         {
             transform.eulerAngles = new Vector3(0, 0, 90);
             isFacingUp = false;
             isFacingDown = false;
             isFacingLeft = true;
             isFacingRight = false;
         }
         if (Input.GetKey(KeyCode.D))
         {
             transform.eulerAngles = new Vector3(0, 0, -90);
             isFacingUp = false;
             isFacingDown = false;
             isFacingLeft = false;
             isFacingRight = true;
         }
     }   
 }
 
              
               Comment
              
 
               
              Your answer