Unity C#で矢印キーで操作しながら玉を転がす方法を説明します
Unityエディターのバージョン : 2022.3.16f1
手順
1.以下のスクリプトを、転がしたい3Dオブジェクトにアタッチする
2.スクリプトコンポーネントのインスペクターから”moveSpeed”(転がる速さ)を設定する ⇒これで完了
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BallController : MonoBehaviour
{
public float moveSpeed; //ボールが転がる速さ
// Start is called before the first frame update
void Start()
{
Application.targetFrameRate = 60; //フレームレートを60に設定
}
// Update is called once per frame
void Update()
{
RotateBall();
}
void RotateBall()
{
if (Input.GetKey(KeyCode.RightArrow))
{
transform.Rotate(0, -7.5f * moveSpeed, 0, Space.World); //回転する方向と回転の大きさを指定
transform.Translate(0.1f * moveSpeed, 0, 0, Space.World); //移動する方向と移動の大きさを指定
}
if (Input.GetKey(KeyCode.LeftArrow))
{
transform.Rotate(0, 7.5f * moveSpeed, 0, Space.World); //回転する方向と回転の大きさを指定
transform.Translate(-0.1f * moveSpeed, 0, 0, Space.World); //移動する方向と移動の大きさを指定
}
if (Input.GetKey(KeyCode.UpArrow))
{
transform.Rotate(7.5f * moveSpeed, 0, 0, Space.World); //回転する方向と回転の大きさを指定
transform.Translate(0, 0.1f * moveSpeed, 0, Space.World); //移動する方向と移動の大きさを指定
}
if (Input.GetKey(KeyCode.DownArrow))
{
transform.Rotate(-7.5f * moveSpeed, 0, 0, Space.World); //回転する方向と回転の大きさを指定
transform.Translate(0, -0.1f * moveSpeed, 0, Space.World); //移動する方向と移動の大きさを指定
}
}
}
第四引数に”Space.World”を送ったことで、ワールド座標を中心に移動・回転するようになりました
回転と移動の方向は設定している重力の方向にもよるので、もしこの方法で上手くいかなければ、回転と移動の方向を変えてみてください