i have a 2d plane thats side view, trying to get the plane to rotate clockwise when the right button is pressed and anti clockwise when the left button is pressed
i have 2 buttons each have an EventTrigger
1 for up and 1 for down
but it doesnt turn incrementally, it just starts turning max as soon as you press the button
i cant work out how to move incrementally
please help
here is my script
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class PlaneController : MonoBehaviour
{
Rigidbody2D rb;
[Tooltip("World units per second.")]
public float moveSpeed;
[Tooltip("Degrees per second.")]
public float rotateAmount;
float rot;
bool stalling = false;
bool groundCrash = false;
bool up = false;
bool down = false;
public Animator anim;
public GameObject bullet1;
private bool firingBullet1 = false;
public float bulletSpeed = 500;
public GameObject BulletSpawnObject;
private Renderer[] renderers;
private bool isWrappingX = false;
SpriteRenderer spriteRenderer;
void Start()
{
renderers = GetComponentsInChildren<Renderer>();
}
private void Awake()
{
rb = GetComponent<Rigidbody2D>();
spriteRenderer = GetComponent<SpriteRenderer>();
}
// Update is called once per frame
void Update()
{
float angle = transform.eulerAngles.z;
if (up)
{
rot = rotateAmount;
}
if (down)
{
rot = -rotateAmount;
}
else
{
SetFlipY();
}
transform.Rotate(0, 0, rot * Time.deltaTime);
if (stalling)
{
if (angle < 110 && angle > 70)
{
Debug.Log("Angle = " + angle);
rb.gravityScale = 25;
stalling = false;
}
else
{
rb.gravityScale = 15;
stalling = false;
}
StartCoroutine(StallTime());
}
if (firingBullet1)
{
GameObject newBullet1 = Instantiate(bullet1, BulletSpawnObject.transform.position, transform.rotation);
newBullet1.GetComponent<Rigidbody2D>().AddRelativeForce(Vector2.right * bulletSpeed);
Destroy(newBullet1, 2.0F);
FindObjectOfType<AudioManager>().Play("Gun1");
firingBullet1 = false;
}
if (groundCrash)
{
FindObjectOfType<AudioManager>().Play("Explosion1");
groundCrash = false;
anim.SetBool("Crashed", true);
}
}
private void FixedUpdate()
{
rb.velocity = transform.right * moveSpeed;
ScreenWrap();
}
void SetFlipY()
{
// I'm not going to base it off of rot but rather off of the
// sign of the x component of the transform.right vector.
bool flipy = transform.right.x < 0;
spriteRenderer.flipY = flipy;
}
void ScreenWrap()
{
bool isVisible = CheckRenderers();
if (isVisible)
{
isWrappingX = false;
return;
}
if (isWrappingX)
{
return;
}
Vector3 newPosition = transform.position;
if (newPosition.x > 1 || newPosition.x < 0)
{
newPosition.x = -newPosition.x;
isWrappingX = true;
}
transform.position = newPosition;
}
bool CheckRenderers()
{
foreach (Renderer renderer in renderers)
{
if (renderer.isVisible)
{
return true;
}
}
return false;
}
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "HeightBorder")
{
stalling = true;
}
if (collision.gameObject.tag == "GroundBorder")
{
groundCrash = true;
}
}
IEnumerator StallTime()
{
//float randomTime = Random.Range(3f, 10f);
yield return new WaitForSeconds(0.5f);
rb.gravityScale = 0;
}
public void FireBullet()
{
firingBullet1 = true;
}
public void LeftDown()
{
up = true;
}
public void LeftUp()
{
up = false;
}
public void RightUp()
{
down = true;
}
public void RightDown()
{
down = false;
}
}