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

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

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

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

Q&A

解決済

2回答

368閲覧

主人公が乗ると数秒後に落下する床の作成

xxxxxxx

総合スコア50

C#

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

0グッド

0クリップ

投稿2017/10/31 00:28

c#勉強したてのものです。
https://gametukurikata.com/program/fallfloor
のサイトに載っている主人公が乗ると数秒後に落下する床の作成で、書いてあるものをそのまま実行しようとしてみたら

c#

1function OnControllerColliderHit(col : ControllerColliderHit) { 2 if(col.gameObject.tag == "FallBlock") { 3 col.gameObject.GetComponent.<FallFloor>().ReceiveForce(); 4 } 5} 6```の1行目のfunctionと 7 8```c# 9public var limitTime : float; 10private var totalTime : float; 11private var rigidBody : Rigidbody; 12 13function Start () { 14 totalTime = 0.0f; 15 rigidBody = GetComponent.<Rigidbody>(); 16} 17 18function Update () { 19 20 if(totalTime >= limitTime) { 21 rigidBody.isKinematic = false; 22 } 23} 24 25function ReceiveForce() { 26 27 if(rigidBody == null) { 28 gameObject.AddComponent(Rigidbody); 29 rigidBody = GetComponent.<Rigidbody>(); 30 rigidBody.isKinematic = true; 31 } 32 33 totalTime += Time.deltaTime; 34} 35 36function OnCollisionEnter(col : Collision) { 37 38 if(col.gameObject.layer == LayerMask.NameToLayer("Field")) { 39 Destroy(this.gameObject); 40 } 41} 42```の1行目のvarでエラーが出ます。 43 44両者ともUnexpected symbolと出てくるのですが、何がおかしいのかわかる方いましたらご教授願いたいと思います。

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

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

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

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

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

guest

回答2

0

そのサイトのここを見ると解決する問題だったりしませんか?

投稿2017/10/31 00:37

HiroshiWatanabe

総合スコア2160

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

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

xxxxxxx

2017/10/31 00:46

みながらやってみたいと思います! ありがとうございました。
guest

0

ベストアンサー

ご参考になさったサイトではJavaScriptを用いている様子ですね。
JavaScriptのスクリプトファイルはメニューのAssets > Create > JavaScriptで作成できるかと思います。

[コメントを受けて追記]
どの部分がうまくいかなかったでしょうか?

一旦メニューのAssets > Create > C# Scriptで適当な名前でC#スクリプトを作ってみますと、StartとUpdateの書かれた雛型ができるかと思います。基本的な骨格はそれをまねて、あとは

  • 先のJavaScriptで書かれた諸々のコードと対応するC#コードはpublic class スクリプト名 : Monobehaviour {書き換えたコード}のようにクラス定義の中に入れる
  • public/private var 変数の名前 : 型の名前;public/private 型の名前 変数の名前;の形にする
  • メソッドの定義の形をC#のスタイルにする...例えばfunction OnCollisionEnter(col : Collision)void OnCollisionEnter(Collision col)のような風に、返り値の型またはvoid メソッドの名前(引数の型 引数の名前)に書き換える
  • ReceiveForceは別のスクリプトから呼びたいので、別のスクリプトからアクセス可能にする...つまりpublic void ReceiveForce()という風にメソッド定義の頭にpublicを付ける
  • GetComponent.<型の名前>()のドットは消してGetComponent<型の名前>()にする

このあたりはHiroshiWatanabeさんがご提示いただいたページで一通り解説されていましたので、それに沿って書き換えていけばいいでしょう。その他、

  • AddComponent(型の名前)AddComponent<型の名前>()の形にする

といった修正を加えてみてください。

投稿2017/10/31 00:38

編集2017/10/31 02:14
Bongo

総合スコア10807

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

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

Bongo

2017/10/31 00:43

HiroshiWatanabeさんのご回答とタイミングがかぶってしまいました... ご提示のあったページを参考に、C#に書き換えてみるのもよいと思います。
xxxxxxx

2017/10/31 00:45

そんことだったんですね。。。 ありがとうございました。 一度やってみたいと思います
xxxxxxx

2017/10/31 00:59

c#に書き換えることができないのですが、教えていただけますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問