[SerializeField] BoxCollider2D SpawnArea;
private void Randomposition()
{
Bounds bounds = SpawnArea.bounds;
float x =SpawnArea.transform.position.x+ Random.Range(bounds.min.x, bounds.max.x);
float y = SpawnArea.transform.position.y+Random.Range(bounds.min.y, bounds.max.y);
//перед изменением надо проверить на наличие змейки в точке
// не уверен что сработает , без должно тож работать
Vector3 newpos= new Vector3(Mathf.Round(x) + 0.5f, Mathf.Round(y) + 0.5f, -1f); //0.5 из за того что объект равен 1,1
if (IsGetSnake(newpos))
{
Randomposition();
return;
}
transform.position = newpos;
}
bool IsGetSnake(Vector3 pos)
{
bool shake = false;
if (Physics.Raycast(pos + Vector3.forward, -Vector3.forward, out RaycastHit hit))
{
if (hit.transform.tag == "snake")
{
shake = true;
}
}
return shake;
}
private void Start()
{
Randomposition();
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "snake")
{
Randomposition();
}
}
_playerRb.AddForce(_playerRb.transform.up * jumpHeight,ForceMode2D.Impulse);
[SerializeField] GameObject _gO1;
[SerializeField] GameObject _gO2;
private void Update()
{
GameOBJ1Rotator();
}
private void LateUpdate()
{
_gO2.transform.rotation = Quaternion.Euler(0, GetAngle(), 0); //задаем
Debug.Log("GO1 :" + _gO1.transform.eulerAngles.y + " GO2 :" + _gO2.transform.eulerAngles.y); // дебаг для вращения
}
void GameOBJ1Rotator() ///это не надо просто для наглядности, как сломать вращение
{
_gO1.transform.rotation *= Quaternion.Euler(Vector3.one*90f*Time.deltaTime);
}
float GetAngle() //получаем градусы таргет объекта
{
float angle = _gO1.transform.rotation.eulerAngles.y;
return angle;
}
[SerializeField] float rotationSpeed = 360f;
[SerializeField] float _inputPower=5f;
float _inputY;
private void Update()
{
_inputY -= Input.GetAxis("Mouse Y") * _inputPower;
_inputY = Mathf.Clamp(_inputY, -50f, 50f);
transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(Vector3.up * _inputY), rotationSpeed * Time.deltaTime);
}
float _inputX;
float _inputLastInput=1;
private void Update()
{
_inputX = Input.GetAxisRaw("Horizontal");
Mover();
}
private void Mover()
{
if (_inputX == 0) return;
if (_inputLastInput != _inputX) RotObj();
transform.position+=transform.right*Time.deltaTime;
}
void RotObj()
{
_inputLastInput *= -1;
float angle = 180;
if (_inputLastInput == 1) angle = 0;
transform.rotation = Quaternion.Euler(0,angle,0);
}
float fps=1/Time.deltaTime;
using UnityEngine;
public class ParentUsing : MonoBehaviour
{
GameObject _targetGO;
bool UIVision;
void Update()
{
if (Input.GetKeyDown(KeyCode.E) && _targetGO != null)
{
ParentSet(_targetGO);
}
}
void ParentSet(GameObject newParentCursor)
{
gameObject.transform.parent = newParentCursor.transform;
}
void OnTriggerEnter(Collider other)
{
if (other.tag == "Cursor")
{
UIVision = true;
_targetGO= other.gameObject;
}
}
private void OnTriggerExit(Collider other)
{
if(_targetGO==other.gameObject)_targetGO = null;
}
}
using UnityEngine;
using UnityEngine.AI;
public class DebugAI : MonoBehaviour
{
NavMeshAgent _agent;
void Start()
{
_agent = GetComponent<NavMeshAgent>();
}
private void OnDrawGizmos()
{
NavMeshPath path = _agent.path;
Vector3 nowpoint = transform.position;
foreach (Vector3 point in path.corners)
{
Gizmos.color = Color.yellow;
Gizmos.DrawSphere(point, 0.15f);
Gizmos.color= Color.green;
Gizmos.DrawLine(nowpoint, point);
nowpoint = point;
}
}
}