Xaos95
September 11, 2017, 2:55pm
1
I am making a 2D top down car game where as i have 8 different cars and each and one of them has a controller script. I wan’t it so that whenever hold down a button the car will turn left which i have achieved but my only problem is that it only works for one car, the car i dragged into the listener field. I know how to call functions with “onclick” through script but since i need to hold the button down i used the event trigger component.
The event types i used were PointerDown and PointerUp.
Hellium
September 11, 2017, 7:20pm
2
Try something like the following code. But, since I don’t know your Car2DController
, you will have to make appropriate changes
public class TurnController : MonoBehaviour
{
UnityEngine.UI.Button rightButton ;
UnityEngine.UI.Button leftButton ;
Car2DController car2DController;
void Start( )
{
AddRightButtonEvents();
AddLeftButtonEvents();
car2DController = GameObject.FindGameObjectWithTag ("Car").GetComponent<Car2DController> ();
}
void AddRightButtonEvents()
{
EventTrigger eventTrigger = rightButton.gameObject.AddComponent<EventTrigger>( );
EventTrigger.Entry pointerDownEntry = new EventTrigger.Entry( );
pointerDownEntry.eventID = EventTriggerType.PointerDown;
pointerDownEntry.callback.AddListener( ( data ) => { OnRightButtonDown( (PointerEventData)data ); } );
eventTrigger.triggers.Add(pointerDownEntry);
EventTrigger.Entry pointerUpEntry = new EventTrigger.Entry( );
pointerUpEntry.eventID = EventTriggerType.PointerUp;
pointerUpEntry.callback.AddListener( ( data ) => { OnRightButtonUp( (PointerEventData)data ); } );
eventTrigger.triggers.Add(pointerDownEntry);
}
public void OnRightButtonDown( PointerEventData data )
{
car2DController.goLeft = false ;
car2DController.goRight = true ;
}
public void OnRightButtonUp( PointerEventData data )
{
car2DController.goRight = false ;
}
void AddLeftButtonEvents()
{
EventTrigger eventTrigger = leftButton.gameObject.AddComponent<EventTrigger>( );
EventTrigger.Entry pointerDownEntry = new EventTrigger.Entry( );
pointerDownEntry.eventID = EventTriggerType.PointerDown;
pointerDownEntry.callback.AddListener( ( data ) => { OnLeftButtonDown( (PointerEventData)data ); } );
eventTrigger.triggers.Add(pointerDownEntry);
EventTrigger.Entry pointerUpEntry = new EventTrigger.Entry( );
pointerUpEntry.eventID = EventTriggerType.PointerUp;
pointerUpEntry.callback.AddListener( ( data ) => { OnLeftButtonUp( (PointerEventData)data ); } );
eventTrigger.triggers.Add(pointerDownEntry);
}
public void OnLeftButtonDown( PointerEventData data )
{
car2DController.goRight = false ;
car2DController.goLeft = true ;
}
public void OnLeftButtonUp( PointerEventData data )
{
car2DController.goLeft = false ;
}
}