- Home /
Change camera fov on canvas button pressed
Hello there,
I'm trying to change camera's fov when a UI canvas button is pressed, and reset the fov to a default value when released. The code works with keyboard inputs, but not with the UI button. So far I tried to attach the script's funtion to button's "onClick" function. It doesn't work. I also tried to reference the button in the script, and add a listener to it. Not working.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ButtonInputs : MonoBehaviour
{
Camera cam;
public float defaultFov;
public float zoomedFov;
public float altZoomedFov;
public Button leftButton;
public Button rightButton;
void Start ()
{
cam = Camera.main;
Button btn1 = leftButton.GetComponent<Button>();
Button btn2 = rightButton.GetComponent<Button>();
cam.fieldOfView = defaultFov;
btn1.onClick.AddListener(ZoomA);
btn2.onClick.AddListener(ZoomB);
}
void LateUpdate()
{
cam.fieldOfView = defaultFov;
if(Input.GetKey(KeyCode.Z))
{
ZoomA();
}
else if(Input.GetKey(KeyCode.X))
{
ZoomB();
}
}
public void ZoomA()
{
cam.fieldOfView = zoomedFov;
}
public void ZoomB()
{
cam.fieldOfView = altZoomedFov;
}
}
Any idea on how to get the camera to react at UI buttons? Thank you in advance
Answer by eses · Sep 07, 2018 at 11:21 AM
Hi - @Paramotion
This is just a matter of reading your code. Think about it - In your late update you are setting your field of view always to default as first thing - what could happen?
Just remove the line and you'll be fine.
Answer by misher · Sep 07, 2018 at 11:34 AM
Instead of button you need generic event trigger with two even hadlers for on pointer down and on pointer up. The button have just click event handler.
@misher - I think he just has problem with the fov not changing, as he is setting it every frame in LateUpdate... if he would remove the mentioned line, both button assigned methods he has, and keyboard input would work.
Your answer
![](https://koobas.hobune.stream/wayback/20220612174212im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
How to make World Space Canvas be on top of Overlay Canvas? 0 Answers
Canvas: On hovering over Buttons: Wrong Buttons activated 2 Answers
Camera does not render button 2 Answers
I can't see my button in Game View! 3 Answers
How to render part of FOV? 1 Answer