[TUTORIAL] Fazer um VOLANTE com UI, para Android
+9
Fábiow775
FernandoPRB
FPR Software
nicolasfive
RenanKrause
Alerson Software
lolhard
MarcosSchultz
karllus250
13 participantes
Página 1 de 1
[TUTORIAL] Fazer um VOLANTE com UI, para Android
Fala pessoal, estou trazendo um script que eu achei em algum lugar aleatório por ai (se não me engano foi do próprio fórum da Unity), que serve para criar um volante com algum elemento UI (de preferência uma Image).
Basta ter este script em algum objeto qualquer:
E jogar a Image UI ou o que for na variável "UI_Element".
O script ainda traz void's como:
"GetAngle" ou "GetClampedValue", para você conseguir pegar o angulo que está sendo imposto nas rodas :D
Basta ter este script em algum objeto qualquer:
- Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using System.Collections;
public class Volante : MonoBehaviour{
public Graphic UI_Element;
RectTransform rectT;
Vector2 centerPoint;
public float AnguloMaximo = 200f;
public float VelocidadeDeGiro = 200f;
float wheelAngle = 0f;
float wheelPrevAngle = 0f;
bool wheelBeingHeld = false;
public float GetClampedValue(){
return wheelAngle / AnguloMaximo;
}
public float GetAngle(){
return wheelAngle;
}
void Start(){
rectT = UI_Element.rectTransform;
InitEventsSystem();
UpdateRect();
}
void Update(){
if( !wheelBeingHeld && !Mathf.Approximately( 0f, wheelAngle ) ){
float deltaAngle = VelocidadeDeGiro * Time.deltaTime;
if( Mathf.Abs( deltaAngle ) > Mathf.Abs( wheelAngle ) )
wheelAngle = 0f;
else if( wheelAngle > 0f )
wheelAngle -= deltaAngle;
else
wheelAngle += deltaAngle;
}
rectT.localEulerAngles = Vector3.back * wheelAngle;
}
void InitEventsSystem(){
EventTrigger events = UI_Element.gameObject.GetComponent<EventTrigger>();
if (events == null) {
events = UI_Element.gameObject.AddComponent<EventTrigger> ();
}
if (events.triggers == null) {
events.triggers = new System.Collections.Generic.List<EventTrigger.Entry> ();
}
EventTrigger.Entry entry = new EventTrigger.Entry();
EventTrigger.TriggerEvent callback = new EventTrigger.TriggerEvent();
UnityAction<BaseEventData> functionCall = new UnityAction<BaseEventData>( PressEvent );
callback.AddListener( functionCall );
entry.eventID = EventTriggerType.PointerDown;
entry.callback = callback;
events.triggers.Add( entry );
entry = new EventTrigger.Entry();
callback = new EventTrigger.TriggerEvent();
functionCall = new UnityAction<BaseEventData>( DragEvent );
callback.AddListener( functionCall );
entry.eventID = EventTriggerType.Drag;
entry.callback = callback;
events.triggers.Add( entry );
entry = new EventTrigger.Entry();
callback = new EventTrigger.TriggerEvent();
functionCall = new UnityAction<BaseEventData>( ReleaseEvent );
callback.AddListener( functionCall );
entry.eventID = EventTriggerType.PointerUp;
entry.callback = callback;
events.triggers.Add( entry );
}
void UpdateRect(){
Vector3[] corners = new Vector3[4];
rectT.GetWorldCorners( corners );
for( int i = 0; i < 4; i++ ){
corners[i] = RectTransformUtility.WorldToScreenPoint( null, corners[i] );
}
Vector3 bottomLeft = corners[0];
Vector3 topRight = corners[2];
float width = topRight.x - bottomLeft.x;
float height = topRight.y - bottomLeft.y;
Rect _rect = new Rect( bottomLeft.x, topRight.y, width, height );
centerPoint = new Vector2( _rect.x + _rect.width * 0.5f, _rect.y - _rect.height * 0.5f );
}
public void PressEvent( BaseEventData eventData ){
Vector2 pointerPos = ( (PointerEventData) eventData ).position;
wheelBeingHeld = true;
wheelPrevAngle = Vector2.Angle( Vector2.up, pointerPos - centerPoint );
}
public void DragEvent( BaseEventData eventData ){
Vector2 pointerPos = ( (PointerEventData) eventData ).position;
float wheelNewAngle = Vector2.Angle( Vector2.up, pointerPos - centerPoint );
if( Vector2.Distance( pointerPos, centerPoint ) > 20f ){
if (pointerPos.x > centerPoint.x) {
wheelAngle += wheelNewAngle - wheelPrevAngle;
} else {
wheelAngle -= wheelNewAngle - wheelPrevAngle;
}
}
wheelAngle = Mathf.Clamp( wheelAngle, -AnguloMaximo, AnguloMaximo );
wheelPrevAngle = wheelNewAngle;
}
public void ReleaseEvent( BaseEventData eventData ){
DragEvent( eventData );
wheelBeingHeld = false;
}
}
E jogar a Image UI ou o que for na variável "UI_Element".
O script ainda traz void's como:
"GetAngle" ou "GetClampedValue", para você conseguir pegar o angulo que está sendo imposto nas rodas :D
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Entao marcos a imagem giro direitinho mas a roda do veiculo nao o que fazer
karllus250- Avançado
- PONTOS : 3259
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
eu nao entedir foi a explicaçao
karllus250- Avançado
- PONTOS : 3259
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Basta utilizar as void's de GET que o script já traz uékarllus250 escreveu:eu nao entedir foi a explicaçao
você sabe utilizar GetComponent? acessar outros scripts?
karllus250- Avançado
- PONTOS : 3259
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Nem tentou??? Bom, dei uma ajeitada e tirei os Component já que você não sabe usar:karllus250 escreveu:NAO
- Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using System.Collections;
public class Volante : MonoBehaviour{
public Graphic UI_Element;
RectTransform rectT;
Vector2 centerPoint;
float wheelAngle = 0f;
float wheelPrevAngle = 0f;
bool wheelBeingHeld = false;
public WheelCollider RodaFrenteDir, RodaFrenteEsq;
void Start(){
rectT = UI_Element.rectTransform;
InitEventsSystem();
UpdateRect();
}
void FixedUpdate(){
RodaFrenteDir.steerAngle = Mathf.Clamp ((wheelAngle / 5.0f), -40.0f, 40.0f);
RodaFrenteEsq.steerAngle = Mathf.Clamp ((wheelAngle / 5.0f), -40.0f, 40.0f);
}
void Update(){
Debug.Log (wheelAngle);
if( !wheelBeingHeld && !Mathf.Approximately( 0f, wheelAngle ) ){
float deltaAngle = 200.0f * Time.deltaTime;
if( Mathf.Abs( deltaAngle ) > Mathf.Abs( wheelAngle ) )
wheelAngle = 0f;
else if( wheelAngle > 0f )
wheelAngle -= deltaAngle;
else
wheelAngle += deltaAngle;
}
rectT.localEulerAngles = Vector3.back * wheelAngle;
}
void InitEventsSystem(){
EventTrigger events = UI_Element.gameObject.GetComponent<EventTrigger>();
if (events == null) {
events = UI_Element.gameObject.AddComponent<EventTrigger> ();
}
if (events.triggers == null) {
events.triggers = new System.Collections.Generic.List<EventTrigger.Entry> ();
}
EventTrigger.Entry entry = new EventTrigger.Entry();
EventTrigger.TriggerEvent callback = new EventTrigger.TriggerEvent();
UnityAction<BaseEventData> functionCall = new UnityAction<BaseEventData>( PressEvent );
callback.AddListener( functionCall );
entry.eventID = EventTriggerType.PointerDown;
entry.callback = callback;
events.triggers.Add( entry );
entry = new EventTrigger.Entry();
callback = new EventTrigger.TriggerEvent();
functionCall = new UnityAction<BaseEventData>( DragEvent );
callback.AddListener( functionCall );
entry.eventID = EventTriggerType.Drag;
entry.callback = callback;
events.triggers.Add( entry );
entry = new EventTrigger.Entry();
callback = new EventTrigger.TriggerEvent();
functionCall = new UnityAction<BaseEventData>( ReleaseEvent );
callback.AddListener( functionCall );
entry.eventID = EventTriggerType.PointerUp;
entry.callback = callback;
events.triggers.Add( entry );
}
void UpdateRect(){
Vector3[] corners = new Vector3[4];
rectT.GetWorldCorners( corners );
for( int i = 0; i < 4; i++ ){
corners[i] = RectTransformUtility.WorldToScreenPoint( null, corners[i] );
}
Vector3 bottomLeft = corners[0];
Vector3 topRight = corners[2];
float width = topRight.x - bottomLeft.x;
float height = topRight.y - bottomLeft.y;
Rect _rect = new Rect( bottomLeft.x, topRight.y, width, height );
centerPoint = new Vector2( _rect.x + _rect.width * 0.5f, _rect.y - _rect.height * 0.5f );
}
public void PressEvent( BaseEventData eventData ){
Vector2 pointerPos = ( (PointerEventData) eventData ).position;
wheelBeingHeld = true;
wheelPrevAngle = Vector2.Angle( Vector2.up, pointerPos - centerPoint );
}
public void DragEvent( BaseEventData eventData ){
Vector2 pointerPos = ( (PointerEventData) eventData ).position;
float wheelNewAngle = Vector2.Angle( Vector2.up, pointerPos - centerPoint );
if( Vector2.Distance( pointerPos, centerPoint ) > 20f ){
if (pointerPos.x > centerPoint.x) {
wheelAngle += wheelNewAngle - wheelPrevAngle;
} else {
wheelAngle -= wheelNewAngle - wheelPrevAngle;
}
}
wheelAngle = Mathf.Clamp( wheelAngle, -200, 200 );
wheelPrevAngle = wheelNewAngle;
}
public void ReleaseEvent( BaseEventData eventData ){
DragEvent( eventData );
wheelBeingHeld = false;
}
}
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Marcos eu usei este ultimo script e a imagem gira mas as rodas n eu linquei tudo certo
lolhard- Avançado
- PONTOS : 3331
REPUTAÇÃO : 9
Áreas de atuação : Blender
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
linkou as mesh ou as wheel?
Para as mesh girarem, você vai precisar fazer aquilo que eu fiz no meu tutorial de veículos...
Isto é para as wheels girarem e não para as mesh
Para as mesh girarem, você vai precisar fazer aquilo que eu fiz no meu tutorial de veículos...
Isto é para as wheels girarem e não para as mesh
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
linkei as whell
lolhard- Avançado
- PONTOS : 3331
REPUTAÇÃO : 9
Áreas de atuação : Blender
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Eu preciso alterar algo no script ou fazer mais algo ?
lolhard- Avançado
- PONTOS : 3331
REPUTAÇÃO : 9
Áreas de atuação : Blender
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
nao gira marcos linkei as whell tambem e nao gira
karllus250- Avançado
- PONTOS : 3259
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
nuss, quanto flood, cuidado com as regras.
O que deve estar acontecendo é que você ainda está tentando passar o angulo das wheels por algum outro script, então eles ficam se sobre escrevendo...
Um script está passando o angulo da UI, e outro do InputHorizontal... você tem que ajeitar isto.
O que deve estar acontecendo é que você ainda está tentando passar o angulo das wheels por algum outro script, então eles ficam se sobre escrevendo...
Um script está passando o angulo da UI, e outro do InputHorizontal... você tem que ajeitar isto.
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Obrigado e desculpa
lolhard- Avançado
- PONTOS : 3331
REPUTAÇÃO : 9
Áreas de atuação : Blender
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
ola marcos eu usei seu script de veiculo e coloquei o script de volante no meu carro e linkei as duas wheel colliders 1 e a 2 e o peneu n girou oque fazer?
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Você está cometendo o mesmo erro do lolhard... Um script está passando o InputHorizontal e o outro script está passando o Input da UI. Você tem que remover a parte do steerAngle do script do "Veículo Simples"
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
obrigado funcionou bem legalMarcosSchultz escreveu:Você está cometendo o mesmo erro do lolhard... Um script está passando o InputHorizontal e o outro script está passando o Input da UI. Você tem que remover a parte do steerAngle do script do "Veículo Simples"
RenanKrause- Membro
- PONTOS : 3026
REPUTAÇÃO : 4
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
RenanKrause escreveu:como fasso para colocar um acelerador e o freio
Crie um tópico específico para esta dúvida... este é sobre o tutorial de volante.
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
fiz tudo certinho o carro vira e tudo mas a roda fica parada porque ?
nicolasfive- Avançado
- PONTOS : 3188
REPUTAÇÃO : 17
Idade : 22
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
nicolasfive escreveu:fiz tudo certinho o carro vira e tudo mas a roda fica parada porque ?
Está linkando todos os objetos corretamente nas variaveis?
está linkando as mesh das rodas nas variáveis corretas?
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
MarcosSchultz escreveu:Fala pessoal, estou trazendo um script que eu achei em algum lugar aleatório por ai (se não me engano foi do próprio fórum da Unity), que serve para criar um volante com algum elemento UI (de preferência uma Image).
Basta ter este script em algum objeto qualquer:
- Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.Events;
using System.Collections;
public class Volante : MonoBehaviour{
public Graphic UI_Element;
RectTransform rectT;
Vector2 centerPoint;
public float AnguloMaximo = 200f;
public float VelocidadeDeGiro = 200f;
float wheelAngle = 0f;
float wheelPrevAngle = 0f;
bool wheelBeingHeld = false;
public float GetClampedValue(){
return wheelAngle / AnguloMaximo;
}
public float GetAngle(){
return wheelAngle;
}
void Start(){
rectT = UI_Element.rectTransform;
InitEventsSystem();
UpdateRect();
}
void Update(){
if( !wheelBeingHeld && !Mathf.Approximately( 0f, wheelAngle ) ){
float deltaAngle = VelocidadeDeGiro * Time.deltaTime;
if( Mathf.Abs( deltaAngle ) > Mathf.Abs( wheelAngle ) )
wheelAngle = 0f;
else if( wheelAngle > 0f )
wheelAngle -= deltaAngle;
else
wheelAngle += deltaAngle;
}
rectT.localEulerAngles = Vector3.back * wheelAngle;
}
void InitEventsSystem(){
EventTrigger events = UI_Element.gameObject.GetComponent<EventTrigger>();
if (events == null) {
events = UI_Element.gameObject.AddComponent<EventTrigger> ();
}
if (events.triggers == null) {
events.triggers = new System.Collections.Generic.List<EventTrigger.Entry> ();
}
EventTrigger.Entry entry = new EventTrigger.Entry();
EventTrigger.TriggerEvent callback = new EventTrigger.TriggerEvent();
UnityAction<BaseEventData> functionCall = new UnityAction<BaseEventData>( PressEvent );
callback.AddListener( functionCall );
entry.eventID = EventTriggerType.PointerDown;
entry.callback = callback;
events.triggers.Add( entry );
entry = new EventTrigger.Entry();
callback = new EventTrigger.TriggerEvent();
functionCall = new UnityAction<BaseEventData>( DragEvent );
callback.AddListener( functionCall );
entry.eventID = EventTriggerType.Drag;
entry.callback = callback;
events.triggers.Add( entry );
entry = new EventTrigger.Entry();
callback = new EventTrigger.TriggerEvent();
functionCall = new UnityAction<BaseEventData>( ReleaseEvent );
callback.AddListener( functionCall );
entry.eventID = EventTriggerType.PointerUp;
entry.callback = callback;
events.triggers.Add( entry );
}
void UpdateRect(){
Vector3[] corners = new Vector3[4];
rectT.GetWorldCorners( corners );
for( int i = 0; i < 4; i++ ){
corners[i] = RectTransformUtility.WorldToScreenPoint( null, corners[i] );
}
Vector3 bottomLeft = corners[0];
Vector3 topRight = corners[2];
float width = topRight.x - bottomLeft.x;
float height = topRight.y - bottomLeft.y;
Rect _rect = new Rect( bottomLeft.x, topRight.y, width, height );
centerPoint = new Vector2( _rect.x + _rect.width * 0.5f, _rect.y - _rect.height * 0.5f );
}
public void PressEvent( BaseEventData eventData ){
Vector2 pointerPos = ( (PointerEventData) eventData ).position;
wheelBeingHeld = true;
wheelPrevAngle = Vector2.Angle( Vector2.up, pointerPos - centerPoint );
}
public void DragEvent( BaseEventData eventData ){
Vector2 pointerPos = ( (PointerEventData) eventData ).position;
float wheelNewAngle = Vector2.Angle( Vector2.up, pointerPos - centerPoint );
if( Vector2.Distance( pointerPos, centerPoint ) > 20f ){
if (pointerPos.x > centerPoint.x) {
wheelAngle += wheelNewAngle - wheelPrevAngle;
} else {
wheelAngle -= wheelNewAngle - wheelPrevAngle;
}
}
wheelAngle = Mathf.Clamp( wheelAngle, -AnguloMaximo, AnguloMaximo );
wheelPrevAngle = wheelNewAngle;
}
public void ReleaseEvent( BaseEventData eventData ){
DragEvent( eventData );
wheelBeingHeld = false;
}
}
E jogar a Image UI ou o que for na variável "UI_Element".
O script ainda traz void's como:
"GetAngle" ou "GetClampedValue", para você conseguir pegar o angulo que está sendo imposto nas rodas :D
Como eu faço pra meu volante girar junto com base nesse script??
FPR Software- Iniciante
- PONTOS : 2827
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
- Código:
using UnityEngine;
using System.Collections;
public class Volante : MonoBehaviour {
[Range(0.4f,4.0f)]public float velGiroVolante = 2.0f;
float rotacInicVolanteZ, angulo2Volante;
void Start () {
rotacInicVolanteZ = transform.localEulerAngles.z;
}
void Update () {
float direcaoFixVolante = Input.GetAxis ("Horizontal");
angulo2Volante = Mathf.MoveTowards(angulo2Volante, direcaoFixVolante, velGiroVolante*Time.deltaTime);
transform.localEulerAngles = new Vector3 (transform.localEulerAngles.x, transform.localEulerAngles.y, rotacInicVolanteZ + (angulo2Volante * 540.0f));//540 = 1.5 voltas
}
}
Este é um script de volante simples... basta trocar os inputs Horizontal pelo input do touch
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Mas como eu faço isso?
FPR Software- Iniciante
- PONTOS : 2827
REPUTAÇÃO : 0
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
o volante gira mais não voltaMarcosSchultz escreveu:
- Código:
using UnityEngine;
using System.Collections;
public class Volante : MonoBehaviour {
[Range(0.4f,4.0f)]public float velGiroVolante = 2.0f;
float rotacInicVolanteZ, angulo2Volante;
void Start () {
rotacInicVolanteZ = transform.localEulerAngles.z;
}
void Update () {
float direcaoFixVolante = Input.GetAxis ("Horizontal");
angulo2Volante = Mathf.MoveTowards(angulo2Volante, direcaoFixVolante, velGiroVolante*Time.deltaTime);
transform.localEulerAngles = new Vector3 (transform.localEulerAngles.x, transform.localEulerAngles.y, rotacInicVolanteZ + (angulo2Volante * 540.0f));//540 = 1.5 voltas
}
}
Este é um script de volante simples... basta trocar os inputs Horizontal pelo input do touch
FernandoPRB- Membro
- PONTOS : 3056
REPUTAÇÃO : 4
Idade : 22
Áreas de atuação : Modelagem
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Tente este:
Este vai no veículo mesmo... Tenha certeza também de verificar se a referância está como Local e não em Global, no editor.
- Código:
using UnityEngine;
using System.Collections;
public class Volante : MonoBehaviour {
public enum Tipos {GirarEmX, GirarEmY, GirarEmZ};
public GameObject objVolante;
public Tipos Rotacao = Tipos.GirarEmZ;
[Range(0.4f,4.0f)]public float velGiroVolante = 2.0f;
public bool inverterGiro = false;
float rotacInicVolantAxis, angulo2Volante;
void Start () {
if (objVolante) {
switch (Rotacao) {
case Tipos.GirarEmX:
rotacInicVolantAxis = objVolante.transform.localEulerAngles.x;
break;
case Tipos.GirarEmY:
rotacInicVolantAxis = objVolante.transform.localEulerAngles.y;
break;
case Tipos.GirarEmZ:
rotacInicVolantAxis = objVolante.transform.localEulerAngles.z;
break;
}
}
}
void Update () {
if (objVolante) {
float velMultplic = 1;
if (inverterGiro) {
velMultplic = -1;
}
float direcaoFixVolante = Input.GetAxis ("Horizontal") * velMultplic;
angulo2Volante = Mathf.MoveTowards (angulo2Volante, direcaoFixVolante, velGiroVolante * Time.deltaTime);
switch (Rotacao) {
case Tipos.GirarEmX:
objVolante.transform.localEulerAngles = new Vector3 (rotacInicVolantAxis + (angulo2Volante * 540.0f), objVolante.transform.localEulerAngles.y, objVolante.transform.localEulerAngles.z);//540 = 1.5 voltas
break;
case Tipos.GirarEmY:
objVolante.transform.localEulerAngles = new Vector3 (objVolante.transform.localEulerAngles.x, rotacInicVolantAxis + (angulo2Volante * 540.0f), objVolante.transform.localEulerAngles.z);
break;
case Tipos.GirarEmZ:
objVolante.transform.localEulerAngles = new Vector3 (objVolante.transform.localEulerAngles.x, objVolante.transform.localEulerAngles.y, rotacInicVolantAxis + (angulo2Volante * 540.0f));
break;
}
}
}
}
Este vai no veículo mesmo... Tenha certeza também de verificar se a referância está como Local e não em Global, no editor.
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Todos os scripts que tiver steer angle e preciso retirar tipo do car controle e do veículo simples?
Fábiow775- Membro
- PONTOS : 2882
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
sim, do contrário você vai ter outros scripts setando steerAngle, e vai dar conflito.
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
RenanKrause escreveu:como fasso para colocar um acelerador e o freio
use o asset de controle mobile da unity que você ira conseguir o que quer :bounce:
Gabriel César O- Profissional
- PONTOS : 3986
REPUTAÇÃO : 217
Idade : 23
Áreas de atuação : (ESTUDANDO SEGUNDO GRAU), (FUÇANDO NO UNITY)){
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
MarcosSchultz escreveu:Tente este:
- Código:
using UnityEngine;
using System.Collections;
public class Volante : MonoBehaviour {
public enum Tipos {GirarEmX, GirarEmY, GirarEmZ};
public GameObject objVolante;
public Tipos Rotacao = Tipos.GirarEmZ;
[Range(0.4f,4.0f)]public float velGiroVolante = 2.0f;
public bool inverterGiro = false;
float rotacInicVolantAxis, angulo2Volante;
void Start () {
if (objVolante) {
switch (Rotacao) {
case Tipos.GirarEmX:
rotacInicVolantAxis = objVolante.transform.localEulerAngles.x;
break;
case Tipos.GirarEmY:
rotacInicVolantAxis = objVolante.transform.localEulerAngles.y;
break;
case Tipos.GirarEmZ:
rotacInicVolantAxis = objVolante.transform.localEulerAngles.z;
break;
}
}
}
void Update () {
if (objVolante) {
float velMultplic = 1;
if (inverterGiro) {
velMultplic = -1;
}
float direcaoFixVolante = Input.GetAxis ("Horizontal") * velMultplic;
angulo2Volante = Mathf.MoveTowards (angulo2Volante, direcaoFixVolante, velGiroVolante * Time.deltaTime);
switch (Rotacao) {
case Tipos.GirarEmX:
objVolante.transform.localEulerAngles = new Vector3 (rotacInicVolantAxis + (angulo2Volante * 540.0f), objVolante.transform.localEulerAngles.y, objVolante.transform.localEulerAngles.z);//540 = 1.5 voltas
break;
case Tipos.GirarEmY:
objVolante.transform.localEulerAngles = new Vector3 (objVolante.transform.localEulerAngles.x, rotacInicVolantAxis + (angulo2Volante * 540.0f), objVolante.transform.localEulerAngles.z);
break;
case Tipos.GirarEmZ:
objVolante.transform.localEulerAngles = new Vector3 (objVolante.transform.localEulerAngles.x, objVolante.transform.localEulerAngles.y, rotacInicVolantAxis + (angulo2Volante * 540.0f));
break;
}
}
}
}
Este vai no veículo mesmo... Tenha certeza também de verificar se a referância está como Local e não em Global, no editor.
agr nem o volante nem as rodas giram
HeF Soft- Membro
- PONTOS : 2849
REPUTAÇÃO : 4
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Tem como enviar o projeto então pra eu ver? Você deve estar esquecendo algo bem tosco então, não entendo o que pode estar errado.
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Marcos eu sei usar GetComponent, como eu faço para a roda girar de acordo com a Imagem?MarcosSchultz escreveu:Basta utilizar as void's de GET que o script já traz uékarllus250 escreveu:eu nao entedir foi a explicaçao
você sabe utilizar GetComponent? acessar outros scripts?
Eu tentei aqui mais nao deu certo
Duarte- Programador
- PONTOS : 3354
REPUTAÇÃO : 97
Idade : 24
Áreas de atuação : Programação
Desenvolvedor Android
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Olha amigo uma vez que estava com esse problema eu retirei dos Scripts de controle as partes que continha os Steer Angle, que ira ficar sobrepondo o do volante, da uma olhada pode ser isso.Duarte escreveu:Marcos eu sei usar GetComponent, como eu faço para a roda girar de acordo com a Imagem?MarcosSchultz escreveu:Basta utilizar as void's de GET que o script já traz uékarllus250 escreveu:eu nao entedir foi a explicaçao
você sabe utilizar GetComponent? acessar outros scripts?
Eu tentei aqui mais nao deu certo
Fábiow775- Membro
- PONTOS : 2882
REPUTAÇÃO : 1
Respeito as regras :
Re: [TUTORIAL] Fazer um VOLANTE com UI, para Android
Eu ate tentei mas n consegui, vc poderia me dar uma breve explicação?Gabriel César O escreveu:RenanKrause escreveu:como fasso para colocar um acelerador e o freio
use o asset de controle mobile da unity que você ira conseguir o que quer :bounce:
welyson- Iniciante
- PONTOS : 2613
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» [TUTORIAL] Fazer o personagem ir para a direita e para esquerda tocando na tela (ANDROID)!
» [TUTORIAL] Como fazer controle em TERCEIRA PESSOA para seu personagem no ANDROID!
» Volante para Android.
» [TUTORIAL] Como programar um VOLANTE para veículos
» COMO FAÇO PARA FAZER UM SISTEMA DE SKIN PARA ANDROID ESTILO HEAVY BUS, PROTON BUS, ETC
» [TUTORIAL] Como fazer controle em TERCEIRA PESSOA para seu personagem no ANDROID!
» Volante para Android.
» [TUTORIAL] Como programar um VOLANTE para veículos
» COMO FAÇO PARA FAZER UM SISTEMA DE SKIN PARA ANDROID ESTILO HEAVY BUS, PROTON BUS, ETC
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos