(スクリプト)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TankMovement_1 : MonoBehaviour
{
private float moveS;
public float turnS;
private Rigidbody rb;
private float movementInputValue;
private float turnInputValue;
private void Awake()
{
Cursor.lockState = CursorLockMode.Locked;
}
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
TnakMove();
TankTurn();
}
void TnakMove()
{
movementInputValue = Input.GetAxis("Vertical");
Vector3 movement = transform.forward * movementInputValue * moveS * Time.deltaTime;
rb.MovePosition(rb.position + movement);
// ★加速度の設定
// 入力値の二乗の取得
var inputValue = movementInputValue * movementInputValue;
// 入力値の二乗が最大値(1)に達したら速度を徐々に増加させる。
if(inputValue == 1)
{
moveS += Time.deltaTime;
print(moveS);
// 最大速度の設定
if(moveS > 7)
{
moveS = 7;
}
}
// 入力値が0になったら速度を0に戻す。
if(inputValue == 0)
{
moveS = 0;
}
}
void TankTurn()
{
turnInputValue = Input.GetAxis("Horizontal");
float turn = turnInputValue * turnS * Time.deltaTime;
Quaternion turnRotation = Quaternion.Euler(0, turn, 0);
rb.MoveRotation(rb.rotation * turnRotation);
}
}
(確認)
- 速度が徐々に増加していけば成功
