joystick, que rotaciona o Personagem na direção em que o joystick esta rotacionado
2 participantes
Página 1 de 1
joystick, que rotaciona o Personagem na direção em que o joystick esta rotacionado
Olá pessoal, continuo com problemas no joystick :/ alguém poderia me ajudar a desenvolver um joystick, que rotaciona o Personagem na direção em que o joystick esta rotacionado, e também move o personagem?
obs: meu jogo é 2D
Tenho esse código:
obs: meu jogo é 2D
Tenho esse código:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using UnityStandardAssets.CrossPlatformInput;
public class Player : MonoBehaviour {
private virtualJoystick joystick;
private pontuacao pontuacao;
private SpriteRenderer cor;
private Rigidbody2D playerRb;
private Animator playerAnimator;
public float moveForce = 5, boostMultiplier = 2;
public float fronteiraPlayer;
public float velocidade;
public float velocidadeRot;
public Transform arma;
public GameObject tiroPrefab;
public float forcaTiro;
public GameObject explosaoPrefab;
public float Hp;
public GameObject armasExtras;
public Collider2D pocao;
[SerializeField]
private GameObject gameOverUI;
// Use this for initialization
void Start () {
joystick = FindObjectOfType (typeof(virtualJoystick)) as virtualJoystick;
pontuacao = FindObjectOfType (typeof(pontuacao)) as pontuacao;
playerRb = GetComponent<Rigidbody2D> ();
playerAnimator = GetComponent<Animator> ();
cor = GetComponent<SpriteRenderer> ();
}
void Update () {
}
// Update is called once per frame
void FixedUpdate () {
// Rotacionar a nave
Quaternion rot = transform.rotation;
float MovimentoZ = rot.eulerAngles.z;
MovimentoZ -= CrossPlatformInputManager.GetAxis ("Horizontal") * velocidadeRot * Time.deltaTime;
rot = Quaternion.Euler (0, 0, MovimentoZ);
transform.rotation = rot;
Vector3 moveVec = new Vector3 (0, CrossPlatformInputManager.GetAxis ("Vertical") * velocidade * Time.deltaTime, 0);
bool isBoosting = CrossPlatformInputManager.GetButton ("Boost");
Debug.Log (isBoosting ? boostMultiplier : 1);
//playerRb.AddForce (moveVec * (isBoosting ? boostMultiplier : 1));
// Mover a nave
Vector3 pos = transform.position;
//Vector3 velocity = new Vector3 (0, Input.GetAxis ("Vertical") * velocidade * Time.deltaTime, 0);
pos += rot * moveVec;
// Restringir câmera na posição Y
if (pos.y + fronteiraPlayer > Camera.main.orthographicSize) {
pos.y = Camera.main.orthographicSize - fronteiraPlayer;
}
if (pos.y - fronteiraPlayer < -Camera.main.orthographicSize) {
pos.y = -Camera.main.orthographicSize + fronteiraPlayer;
}
// Restringir a câmera na posição X
float screenRatio = (float) Screen.width / (float) Screen.height;
float widthOrtho = Camera.main.orthographicSize * screenRatio;
if (pos.x + fronteiraPlayer > widthOrtho) {
pos.x = widthOrtho - fronteiraPlayer;
}
if (pos.x - fronteiraPlayer < -widthOrtho) {
pos.x = -widthOrtho + fronteiraPlayer;
}
// Atualiza sua posição
transform.position = pos;
}
/*void Atirar () {
GameObject tempPrefab = Instantiate (tiroPrefab) as GameObject;
tempPrefab.transform.position = arma.position;
tempPrefab.GetComponent<Rigidbody2D> ().AddForce (new Vector2 (0, forcaTiro));
}*/
void OnTriggerEnter2D (Collider2D col) {
switch (col.gameObject.tag) {
case "pocaoPower":
pocaoPower ();
Destroy (col.gameObject);
//explodir ();
break;
case "coins":
coins ();
Destroy (col.gameObject);
break;
case "caixaExplosiva":
explodir ();
Destroy (col.gameObject);
GameOver ();
break;
}
}
void OnCollisionEnter2D (Collision2D col) {
switch (col.gameObject.tag) {
case "tiroInimigo":
tomarDano (1);
MudaCor ();
break;
case "inimigo":
Hp--;
MudaCor ();
if (Hp <= 0) {
explodir ();
GameOver ();
}
break;
case "boss":
explodir ();
GameOver ();
break;
case "asteroids":
explodir ();
GameOver ();
break;
}
}
void MudaCor () {
cor.color = Color.red;
Invoke ("NormalizaCor", 0.08f);
}
void NormalizaCor () {
cor.color = Color.white;
}
void tomarDano (int danoTomado) {
Hp -= danoTomado;
if (Hp <= 0) {
explodir ();
GameOver ();
}
}
void explodir () {
GameObject tempPrefab = Instantiate (explosaoPrefab) as GameObject;
tempPrefab.transform.position = transform.position;
tempPrefab.GetComponent<Rigidbody2D> ().velocity = new Vector2 (0, 0);
Destroy (this.gameObject);
}
void pocaoPower () {
armasExtras.SetActive (true);
pontuacao.pontos += 250;
}
void coins () {
pontuacao.pontos += 1000;
}
public void GameOver () {
Debug.Log ("Game Over!");
gameOverUI.SetActive (true);
}
}
yVIEIRA- Iniciante
- PONTOS : 2546
REPUTAÇÃO : 0
Respeito as regras :
Re: joystick, que rotaciona o Personagem na direção em que o joystick esta rotacionado
seu jogo é mobile?
busca na net ai CNinput nao tem no assest store mais vc acha versões no github
busca na net ai CNinput nao tem no assest store mais vc acha versões no github
Tópicos semelhantes
» Rotacionar objeto de acordo com direção que ele está se movendo
» Atirar o player na direção onde esta o mouse
» [Duvida] Prefab instanciado não esta indo na direção correta
» O jogador se meche mas não olha para a direção em que está se movendo
» Fazer o personagem apontar na direção do movimento
» Atirar o player na direção onde esta o mouse
» [Duvida] Prefab instanciado não esta indo na direção correta
» O jogador se meche mas não olha para a direção em que está se movendo
» Fazer o personagem apontar na direção do movimento
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos