🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

3654閲覧

unityでキャラクター操作のためのボタン入力の無効化について

2323

総合スコア5

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/12/13 09:10

前提・実現したいこと

Unityでキャラクターを操作するためのボタンを無効化
(現在はAWSDと矢印キーで移動が可能になっているがSキーと↓キーを無効化したいです)
アニメーションはUnityChan!に付属していたUnityChanLocomotionを使用しています。

該当のソースコード

C#

1 using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using Photon.Pun; 5using Photon.Realtime; 6 7public class CCharacterControlScript : MonoBehaviour 8{ 9 //オンライン化に必要なコンポーネントを設定 10 public PhotonView myPV; 11 public PhotonTransformView myPTV; 12 13 private Camera mainCam; 14 15 //移動処理に必要なコンポーネントを設定 16 public Animator animator; //モーションをコントロールするためAnimatorを取得 17 public CharacterController controller; //キャラクター移動を管理するためCharacterControllerを取得 18 19 //移動速度等のパラメータ用変数(inspectorビューで設定) 20 public float speed; //キャラクターの移動速 21 public float rotateSpeed; //キャラクターの方向転換速度 22 public float gravity; //キャラにかかる重力の大きさ 23 24 Vector3 targetDirection; //移動する方向のベクトル 25 Vector3 moveDirection = Vector3.zero; 26 27 // Start関数は変数を初期化するための関数 28 void Start () 29  { 30 if (myPV.IsMine) //自キャラであれば実行 31 { 32 //MainCameraのtargetにこのゲームオブジェクトを設定 33 mainCam = Camera.main; 34 mainCam.GetComponent<CCameraScript>().target = this.gameObject.transform; 35 } 36 } 37 38 // Update関数は1フレームに1回実行される 39 void Update () 40 { 41 if (!myPV.IsMine) 42 { 43 return; 44 } 45 46 moveControl(); //移動用関数 47 RotationControl(); //旋回用関数 48 49 //最終的な移動処理 50 //(これが無いとCharacterControllerに情報が送られないため、動けない) 51 controller.Move(moveDirection * Time.deltaTime); 52 } 53 54 void moveControl() 55 { 56 //★進行方向計算 57 //キーボード入力を取得 58 float v = Input.GetAxisRaw("Vertical"); //InputManagerの↑↓の入力 59 float h = Input.GetAxisRaw("Horizontal"); //InputManagerの←→の入力 60 //カメラの正面方向ベクトルからY成分を除き、正規化してキャラが走る方向を取得 61 Vector3 forward = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized; 62 Vector3 right = Camera.main.transform.right; //カメラの右方向を取得 63 //カメラの方向を考慮したキャラの進行方向を計算 64 targetDirection = h * right + v * forward; 65 //★地上にいる場合の処理 66 if (controller.isGrounded) 67 { 68 //移動のベクトルを計算 69 moveDirection = targetDirection * speed; 70 } 71 else //空中操作の処理(重力加速度等) 72 { 73 float tempy = moveDirection.y; 74 //(↓の2文の処理があると空中でも入力方向に動けるようになる) 75 //moveDirection = Vector3.Scale(targetDirection, new Vector3(1, 0, 1)).normalized; 76 //moveDirection *= speed; 77 moveDirection.y = tempy - gravity * Time.deltaTime; 78 } 79 //★走行アニメーション管理 80 if (v > .1 || v < -.1 || h > .1 || h < -.1) //(移動入力があると) 81 { 82 animator.SetFloat("Speed", 1f); //キャラ走行のアニメーションON 83 } 84 else //(移動入力が無いと) 85 { 86 animator.SetFloat("Speed", 0f); //キャラ走行のアニメーションOFF 87 } 88 } 89 90 void RotationControl() //キャラクターが移動方向を変えるときの処理 91 { 92 Vector3 rotateDirection = moveDirection; 93 rotateDirection.y = 0; 94 //それなりに移動方向が変化する場合のみ移動方向を変える 95 if (rotateDirection.sqrMagnitude > 0.01) 96 { 97 //緩やかに移動方向を変える 98 float step = rotateSpeed * Time.deltaTime; 99 Vector3 newDir = Vector3.Slerp(transform.forward, rotateDirection, step); 100 transform.rotation = Quaternion.LookRotation(newDir); 101 } 102 } 103}

補足情報(FW/ツールのバージョンなど)

Unity:2019.4.13f
os:mac

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

イメージ説明

edit<projectSetting<Input<Verticalのdownとsを消せば行けるかな?

投稿2020/12/13 10:34

BRAK

総合スコア98

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問