using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class rocket : MonoBehaviour
{
Rigidbody rigidB;
AudioSource audioSource;
[SerializeField] float rotSpeed = 100.2f;
[SerializeField] float flySpeed = 100.2f;
// Start is called before the first frame update
void Start()
{
rigidB = GetComponent<Rigidbody>();
audioSource = GetComponent<AudioSource>();
}
// Update is called once per frame
void Update()
{
Launch();
Rotation();
}
void Launch()
{
float flyingSpeed = flySpeed * Time.deltaTime;
if (Input.GetKey(KeyCode.Space))
{
rigidB.AddRelativeForce(Vector3.up * flyingSpeed );
if (audioSource.isPlaying == false)
{
audioSource.Play();
}
}
else
{
audioSource.Pause();
}
}
void Rotation()
{
float rotationSpeed = rotSpeed * Time.deltaTime;
rigidB.freezeRotation = true;
if (Input.GetKey(KeyCode.A))
{
transform.Rotate(Vector3.forward*rotationSpeed);
}
if (Input.GetKey(KeyCode.D))
{
transform.Rotate(-Vector3.forward*rotationSpeed);
print("rigth");
}
rigidB.freezeRotation = false;
}
}
transform.Rotate(-Vector3.forward*rotationSpeed);
Поворот работает.
Но такой же подход не хляет для движения почему-то.
Y позиция просто колебается и всё.
Если же вместо flyingSpeed использовать сразу flySpeed . Движение есть, но зависимое от fps. Что неправильно.
rigidB.AddRelativeForce(Vector3.up * flyingSpeed );