Hello,
In my script, I have my player that move around his ennemi with RotateAround.
like this :
{
public GameObject Ennemi;
private float HorizontalMove;
private float VerticalMove;
void Start()
{
}
void Update()
{
HorizontalMove = Input.GetAxisRaw("Horizontal");
transform.RotateAround(Ennemi.transform.position, Vector3.up, HorizontalMove);
}
}
And i want to change the radius of the rotation so he can get closer or run away.
How can i do this ? I’m still a begginner in Unity.
My script is attach to my player.
Thank you.
public GameObject Enemy;
public float HorizontalSensitivity = 1;
public float VerticalSensitivity = 1;
[Range(1,100)]
public float MinDistanceFromEnemy = 1;
[Range(1,100)]
public float MaxDistanceFromEnemy = 50;
private float HorizontalMove;
private float VerticalMove;
private void Start()
{
VerticalMove = Vector3.Distance( transform.position, Enemy.transform.position );
}
void Update()
{
HorizontalMove = Input.GetAxisRaw( "Horizontal" ) * HorizontalSensitivity;
VerticalMove = Mathf.Clamp( VerticalMove - Input.GetAxisRaw( "Vertical" ) * VerticalSensitivity, MinDistanceFromEnemy, MaxDistanceFromEnemy );
transform.position = Enemy.transform.position + ( transform.position - Enemy.transform.position ).normalized * VerticalMove;
transform.RotateAround( Enemy.transform.position, Vector3.up, HorizontalMove );
}
Here , try this
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerRotation : MonoBehaviour {
public Transform Enemy;
private float _horizontalMove;
private float _verticalMove;
private Vector3 _playerPosition;
[SerializeField] private float _radius;
private void Update()
{
_playerPosition = _radius * Vector3.Normalize( this.transform.position - Enemy.position ) + Enemy.position;
_horizontalMove = Input.GetAxisRaw("Horizontal");
this.transform.position = _playerPosition;
transform.RotateAround(Enemy.position,Vector3.up,_horizontalMove);
}
}