Android volante
5 participantes
Página 1 de 1
Android volante
Como fazê um volante para Android
Ex:vira as rodas com o volante
Ex:vira as rodas com o volante
karllus250- Avançado
- PONTOS : 3258
REPUTAÇÃO : 0
Respeito as regras :
Re: Android volante
Vc quer dizer acelerômetro ? De girar o celular e com isto girar o volante?
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: Android volante
Isso que eu quero com UI imagem
karllus250- Avançado
- PONTOS : 3258
REPUTAÇÃO : 0
Respeito as regras :
Re: Android volante
Cara use o campo de busca antes de fazer um tópico
https://www.schultzgames.com/t1759-tutorial-fazer-um-volante-com-ui-para-android?highlight=volante+com+UI
https://www.schultzgames.com/t1759-tutorial-fazer-um-volante-com-ui-para-android?highlight=volante+com+UI
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Android volante
cara eu ja usei esse nao deu certo a rodas nao gira so a imagem
karllus250- Avançado
- PONTOS : 3258
REPUTAÇÃO : 0
Respeito as regras :
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Android volante
nem sei fazer isso
karllus250- Avançado
- PONTOS : 3258
REPUTAÇÃO : 0
Respeito as regras :
Re: Android volante
se aparecer um campo eu coloco o valor mais assim dentro do script nao sei nao
karllus250- Avançado
- PONTOS : 3258
REPUTAÇÃO : 0
Respeito as regras :
Re: Android volante
Leia o tópico INTEIRO, como o weslley citou... o que você procura já está resolvido nele
https://www.schultzgames.com/t1759-tutorial-fazer-um-volante-com-ui-para-android?highlight=volante+com+UI
https://www.schultzgames.com/t1759-tutorial-fazer-um-volante-com-ui-para-android?highlight=volante+com+UI
Re: Android volante
Então Marcos eu li tudo linkei todas as whell só que quando da play a imagem ate vira mas as rodas não
karllus250- Avançado
- PONTOS : 3258
REPUTAÇÃO : 0
Respeito as regras :
Re: Android volante
como não? se você linkar as wheelColliders nas variáveis, tem que funcionar (com o segundo script do tutorial)
Posta o script que você está utilizando ai
Posta o script que você está utilizando ai
ae marcos
- Código:
using UnityEngine;[size=14][/size]using UnityEngine.UI;[size=14][/size]using UnityEngine.EventSystems;[size=14][/size]using UnityEngine.Events;[size=14][/size]using System.Collections;[size=14][/size][size=14][/size]public class Volante : MonoBehaviour{[size=14][/size][size=14][/size] public Graphic UI_Element;[size=14][/size] RectTransform rectT;[size=14][/size] Vector2 centerPoint;[size=14][/size] float wheelAngle = 0f;[size=14][/size] float wheelPrevAngle = 0f;[size=14][/size] bool wheelBeingHeld = false;[size=14][/size] public WheelCollider RodaFrenteDir, RodaFrenteEsq;[size=14][/size][size=14][/size] void Start(){[size=14][/size] rectT = UI_Element.rectTransform;[size=14][/size] InitEventsSystem();[size=14][/size] UpdateRect();[size=14][/size] }[size=14][/size] void FixedUpdate(){[size=14][/size] RodaFrenteDir.steerAngle = Mathf.Clamp ((wheelAngle / 5.0f), -40.0f, 40.0f);[size=14][/size] RodaFrenteEsq.steerAngle = Mathf.Clamp ((wheelAngle / 5.0f), -40.0f, 40.0f);[size=14][/size] }[size=14][/size] void Update(){[size=14][/size] Debug.Log (wheelAngle);[size=14][/size] if( !wheelBeingHeld && !Mathf.Approximately( 0f, wheelAngle ) ){[size=14][/size] float deltaAngle = 200.0f * Time.deltaTime;[size=14][/size] if( Mathf.Abs( deltaAngle ) > Mathf.Abs( wheelAngle ) )[size=14][/size] wheelAngle = 0f;[size=14][/size] else if( wheelAngle > 0f )[size=14][/size] wheelAngle -= deltaAngle;[size=14][/size] else[size=14][/size] wheelAngle += deltaAngle;[size=14][/size] }[size=14][/size] rectT.localEulerAngles = Vector3.back * wheelAngle;[size=14][/size] }[size=14][/size] void InitEventsSystem(){[size=14][/size] EventTrigger events = UI_Element.gameObject.GetComponent<EventTrigger>();[size=14][/size] if (events == null) {[size=14][/size] events = UI_Element.gameObject.AddComponent<EventTrigger> ();[size=14][/size] }[size=14][/size] if (events.triggers == null) {[size=14][/size] events.triggers = new System.Collections.Generic.List<EventTrigger.Entry> ();[size=14][/size] }[size=14][/size] EventTrigger.Entry entry = new EventTrigger.Entry();[size=14][/size] EventTrigger.TriggerEvent callback = new EventTrigger.TriggerEvent();[size=14][/size] UnityAction<BaseEventData> functionCall = new UnityAction<BaseEventData>( PressEvent );[size=14][/size] callback.AddListener( functionCall );[size=14][/size] entry.eventID = EventTriggerType.PointerDown;[size=14][/size] entry.callback = callback;[size=14][/size] events.triggers.Add( entry );[size=14][/size] entry = new EventTrigger.Entry();[size=14][/size] callback = new EventTrigger.TriggerEvent();[size=14][/size] functionCall = new UnityAction<BaseEventData>( DragEvent );[size=14][/size] callback.AddListener( functionCall );[size=14][/size] entry.eventID = EventTriggerType.Drag;[size=14][/size] entry.callback = callback;[size=14][/size] events.triggers.Add( entry );[size=14][/size] entry = new EventTrigger.Entry();[size=14][/size] callback = new EventTrigger.TriggerEvent();[size=14][/size] functionCall = new UnityAction<BaseEventData>( ReleaseEvent );[size=14][/size] callback.AddListener( functionCall );[size=14][/size] entry.eventID = EventTriggerType.PointerUp;[size=14][/size] entry.callback = callback;[size=14][/size] events.triggers.Add( entry );[size=14][/size] }[size=14][/size] void UpdateRect(){[size=14][/size] Vector3[] corners = new Vector3[4];[size=14][/size] rectT.GetWorldCorners( corners );[size=14][/size] for( int i = 0; i < 4; i++ ){[size=14][/size] corners[i] = RectTransformUtility.WorldToScreenPoint( null, corners[i] );[size=14][/size] }[size=14][/size] Vector3 bottomLeft = corners[0];[size=14][/size] Vector3 topRight = corners[2];[size=14][/size] float width = topRight.x - bottomLeft.x;[size=14][/size] float height = topRight.y - bottomLeft.y;[size=14][/size] Rect _rect = new Rect( bottomLeft.x, topRight.y, width, height );[size=14][/size] centerPoint = new Vector2( _rect.x + _rect.width * 0.5f, _rect.y - _rect.height * 0.5f );[size=14][/size] }[size=14][/size] public void PressEvent( BaseEventData eventData ){[size=14][/size] Vector2 pointerPos = ( (PointerEventData) eventData ).position;[size=14][/size] wheelBeingHeld = true;[size=14][/size] wheelPrevAngle = Vector2.Angle( Vector2.up, pointerPos - centerPoint );[size=14][/size] }[size=14][/size] public void DragEvent( BaseEventData eventData ){[size=14][/size] Vector2 pointerPos = ( (PointerEventData) eventData ).position;[size=14][/size] float wheelNewAngle = Vector2.Angle( Vector2.up, pointerPos - centerPoint );[size=14][/size] if( Vector2.Distance( pointerPos, centerPoint ) > 20f ){[size=14][/size] if (pointerPos.x > centerPoint.x) {[size=14][/size] wheelAngle += wheelNewAngle - wheelPrevAngle;[size=14][/size] } else {[size=14][/size] wheelAngle -= wheelNewAngle - wheelPrevAngle;[size=14][/size] }[size=14][/size] }[size=14][/size] wheelAngle = Mathf.Clamp( wheelAngle, -200, 200 );[size=14][/size] wheelPrevAngle = wheelNewAngle;[size=14][/size] }[size=14][/size] public void ReleaseEvent( BaseEventData eventData ){[size=14][/size] DragEvent( eventData );[size=14][/size] wheelBeingHeld = false;[size=14][/size] }[size=14][/size]
Última edição por karllus250 em Dom Jul 24, 2016 2:37 pm, editado 1 vez(es)
karllus250- Avançado
- PONTOS : 3258
REPUTAÇÃO : 0
Respeito as regras :
Re: Android volante
copie código direto do editor do código para que possamos entende a formatação bugo
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Android volante
- 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;
}
}
karllus250- Avançado
- PONTOS : 3258
REPUTAÇÃO : 0
Respeito as regras :
Re: Android volante
Você está linkando as wheelColliders nas variáveis
RodaFrenteDir
RodaFrenteEsq
???
Tem como mandar um vídeo demonstrando o problema? Não tem como 'não virar', você tem um angulo e e está aplicando a wheel collider, então a wheelCollider vai virar, a não ser que o script não esteja em um objeto ativo ou as wheels não estejam linkadas.
RodaFrenteDir
RodaFrenteEsq
???
Tem como mandar um vídeo demonstrando o problema? Não tem como 'não virar', você tem um angulo e e está aplicando a wheel collider, então a wheelCollider vai virar, a não ser que o script não esteja em um objeto ativo ou as wheels não estejam linkadas.
Re: Android volante
eu e ele somos amigos e ele esta certo as rodas n girao de acordo com o volante faz um video mostrando isso marcosMarcosSchultz escreveu:Você está linkando as wheelColliders nas variáveis
RodaFrenteDir
RodaFrenteEsq
???
Tem como mandar um vídeo demonstrando o problema? Não tem como 'não virar', você tem um angulo e e está aplicando a wheel collider, então a wheelCollider vai virar, a não ser que o script não esteja em um objeto ativo ou as wheels não estejam linkadas.
Re: Android volante
verifique se o wheelAngle tem algum valor e ele que vc tem que passar para a rodas
Weslley- Moderador
- PONTOS : 5726
REPUTAÇÃO : 744
Idade : 26
Áreas de atuação : Inversión, Desarrollo, Juegos e Web
Respeito as regras :
Re: Android volante
Você tem algum outro script no veículo aonde as wheelColliders são linkadas? se tiver, poste ai. Provavelmente ele está interferindo no angulo.
Re: Android volante
[size=41]Ate quem fim consegui marcos[/size]
karllus250- Avançado
- PONTOS : 3258
REPUTAÇÃO : 0
Respeito as regras :
Tópicos semelhantes
» Volante para Android.
» Volante Dinamico
» Volante GameObject girar junto com O grafico UI Android
» Volante
» VOLANTE GIRAR JUNTO COM AS RODAS
» Volante Dinamico
» Volante GameObject girar junto com O grafico UI Android
» Volante
» VOLANTE GIRAR JUNTO COM AS RODAS
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos