Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

254
Views
Efficient way to detect touch except on the area of joystick

I'm using this joystick and Mirror for networking

https://github.com/herbou/Unity_EasyJoystick

And I have this script to fire a bullet on the user touch

public class ShootBullet : NetworkBehaviour
{
    [SerializeField]
    private GameObject bulletPrefab;
    private GameObject bullet;

    // Set via the Inspector in Units/second
    [SerializeField] private float _moveSpeed = 2f;
    [SerializeField] private Camera _camera;
    Vector3 touch_Pos = new Vector3(0, 0, 0);

    private void Awake()
    {
        if (!_camera) _camera = Camera.main;
    }

    void Update()
    {
        if (Input.touchCount > 0 && this.isLocalPlayer)
        {
            if (Input.GetTouch(0).phase == TouchPhase.Began)
            {
                var touch = Input.GetTouch(0);
                touch_Pos = _camera.ScreenToWorldPoint(touch.position);

                this.CmdShoot();
            } 
        }

        if (bullet != null)
        {
            bullet.transform.position = Vector3.MoveTowards(bullet.transform.position, touch_Pos, _moveSpeed * Time.deltaTime);
        }
        
    }

    [Command]
    void CmdShoot()
    {
        bullet = Instantiate(bulletPrefab, this.transform.position, Quaternion.identity);
        NetworkServer.Spawn(bullet);
    }

}

My problem right now is it's firing a bullet when I touch the joystick area. What is the efficient way to exclude input.touch on the joystick area

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

You can raycast touch position and check the result.

var mousePos = Input.mousePosition;
var mouseToRay = _camera.ScreenPointToRay(mousePos);
RaycastHit hit;
if (Physics.Raycast(mouseToRay, out hit))
{
    var gameObject = hit.collider.gameObject;
    //Here You can check the name of your object or the layer or tag
    var isMouseUnderJoyStick = gameObject.CompareTag("Your_UI_Tag");
}

And you have to add collider component to your JoyStick

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!