質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.43%
C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

2回答

1312閲覧

[Unity]CS0111というエラーを解決したいです

644

総合スコア2

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2023/10/12 14:26

編集2023/10/12 14:37

実現したいこと

・スペースキーを押してジャンプできる
・スペースキーを押す長さでジャンプの高さが変わる
・矢印キーを押すとキャラクターが左右に移動する
・進行方向にキャラクターが振り向く

前提

Unityで横スクロールアクションゲームを作ろうとしている初心者です。
複数のサイト様を参考にしながらコードを書いています。

発生している問題・エラーメッセージ

Assets\jump.cs(64,10): error CS0111: Type 'PlayerControl' already defines a member called 'FixedUpdate' with the same parameter types

該当のソースコード

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class PlayerControl : MonoBehaviour 6{ 7[SerializeField] 8 float jumpSpeed = 7f; 9[SerializeField] 10 float maxFallSpeed = 20f; 11[SerializeField] 12 float gravity = 15f; 13 private float x_val; 14 private float speed; 15 public float inputSpeed; 16 17 18 bool minJumpFlag = false; 19 20 Vector3 oldPosition; 21 22 Vector3 velocity; 23 24 25 Rigidbody2D rigidbody2D; 26 27 void Update() 28 { 29 if (Input.GetKeyDown("space")) 30 { 31 inputJumpKey = true; 32 } 33 34 if (Input.GetKeyUp("space")) 35 36 { 37 inputJumpKey = false; 38 } 39 } 40 41 void FixedUpdate() 42 { 43 44 if (x_val == 0) 45 { 46 speed = 0; 47 } 48 49 else if (x_val > 0) 50 { 51 speed = inputSpeed; 52 transform.localScale = new Vector3(0.5f, 0.5f, 1); 53 } 54 55 else if (x_val < 0) 56 { 57 speed = inputSpeed * -1; 58 transform.localScale = new Vector3(-0.5f, 0.5f, 1); 59 } 60 61 rb2d.velocity = new Vector2(speed, rb2d.velocity.y); 62 } 63 64 void FixedUpdate() 65 { 66 Vector3 moveDirection = Vector3.zero; 67 68 moveDirection += CalcJumping(moveDirection); 69 70 rigidbody2D.Move(moveDirection * Time.deltaTime); 71 72 velocity = (transform.position - oldPosition) / Time.deltaTime; 73 74 if (rigidbody2D.isGrounded) 75 { 76 minJumpFlag = false; 77 } 78 } 79 80 Vector2 CalcJumping(Vector3 moveDirection) 81 { 82 if (inputSpaceKey && rigidbody2D.isGrounded) 83 { 84 velocity.y = jumpSpeed; 85 } 86 87 if (!inputSpaceKey && !rigidbody2D.isGrounded && !minJumpFlag) 88 { 89 if (0 <= velocity.y) 90 { 91 velocity.y = 0; 92 } 93 minJumpFlag = true; 94 95 } 96 97 moveDirection.y = velocity.y - gravity * Time.deltaTime; 98 moveDirection.y = Mathf.Max(moveDirection.y, -maxFallSpeed); 99 100 return moveDirection; 101 } 102 103 104}

試したこと

少し前は同じようなエラーで’FixedUpdate’が’Update’になっているエラーも出ていましたが改行したり{}を付け足したりしていたら知らない間に消えていました。
このエラーは消えなかったのでFixedUpdateが二つあるのがいけないのかと思い二つ目(ジャンプ機能に関わる方)を消したらむしろエラーが増えたので戻しました。

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

VisualStudio2022とUnity Hub3.5.2を使用しています。

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

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

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

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

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

guest

回答2

0

自己解決

FixedUpdateメソッドを重ねて使おうとしているのが原因でした。そのため、65行目から78行目までの内容を41行目からのメソッドに加えることにより問題を解決しました。

投稿2023/10/14 07:22

644

総合スコア2

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

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

0

google翻訳
タイプ「PlayerControl」は、同じパラメータタイプを持つ「FixedUpdate」というメンバーをすでに定義しています

そりゃ同じモンを複数定義はできませんな

それはナニをするためのメソッドで、どういうときに呼ぶものなんでしょうか

投稿2023/10/12 22:30

y_waiwai

総合スコア87851

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

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

644

2023/10/13 05:30

回答ありがとうございます!該当のエラーが発生している箇所はジャンプ機能に関わる部分です。プレイヤーがSpaceキーを押したときにオブジェクトがとる動作を定めています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.43%

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

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

質問する

関連した質問