Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Юнити проблема с движением

аа бб Ученик (88), на голосовании 2 недели назад
У меня есть игрок который постоянно крутится и при нажатии кнопки он должен толкаться в перёд но он толкается не в ту сторону, а должен в ту которую смотрит
 using System.Collections; 
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;



[RequireComponent(typeof(Rigidbody), typeof(BoxCollider))]
public class CarMove : MonoBehaviour
{
[SerializeField] private Rigidbody _rb;

[SerializeField] private float _dashSpeed;
[SerializeField] private float _rotateSpeed;
[SerializeField] private float _rotateSide = 1;
private Vector3 v3;

private void FixedUpdate()
{
CarRotate();
}

private void CarRotate()
{
v3.z += _rotateSide * _rotateSpeed;
if (v3.z >= 360f)
v3.z -= 360f;
transform.rotation = Quaternion.Euler(-90, 0, v3.z);
}
public void RotateCarLeft()
{
_rotateSide = -1;
}
public void RotateCarRight()
{
_rotateSide = 1;
}

public void dashBotton()
{
_rb.AddForce(Vector3.forward * _dashSpeed);
}
Голосование за лучший ответ
Татьяна Просветленный (36345) 1 месяц назад
 using UnityEngine; 

[RequireComponent(typeof(Rigidbody), typeof(BoxCollider))]
public class CarMove : MonoBehaviour
{
[SerializeField] private Rigidbody _rb;

[SerializeField] private float _dashSpeed;
[SerializeField] private float _rotateSpeed;
[SerializeField] private float _rotateSide = 1;
private Vector3 v3;

private void FixedUpdate()
{
CarRotate();
}

private void CarRotate()
{
v3.z += _rotateSide * _rotateSpeed * Time.fixedDeltaTime;
if (v3.z >= 360f)
v3.z -= 360f;
else if (v3.z < 0f)
v3.z += 360f;
transform.rotation = Quaternion.Euler(-90, 0, v3.z);
}

public void RotateCarLeft()
{
_rotateSide = -1;
}

public void RotateCarRight()
{
_rotateSide = 1;
}

public void DashButton()
{
Vector3 dashDirection = transform.forward;
_rb.AddForce(dashDirection * _dashSpeed, ForceMode.Impulse);
}
}
Похожие вопросы