質問編集履歴

1 文章を訂正

nabesi

nabesi score 13

2018/10/03 14:20  投稿

Unity(C#)で子オブジェクトColliderに当たり判定があった時に親オブジェクトの動きを一時的に止めるコードが知りたいです。
現在3Dアクションゲーム内で鉄球が落ちてくるシーンを作成しています。
現在Unityで3Dアクションゲーム内で鉄球が落ちてくるシーンを作成しています。
やりたいことは鉄球にPlayerが当たると、ダメージアニメーションを呼び出してPlayerの動き(Position)を一定時間止めることです。
![イメージ説明](c580e7fd3934a77aa06563a1819a6f36.jpeg)
PlayerはCharacterControllerを使用して制御をしています。Player自身にRigidbodyを付けれないため、空オブジェクト(col)を作成して、Playerの子要素としてそれにRigidbodyとCapsuleColliderを付けており、それに当たり判定があった時に上記の動きをさせたいです。(PlayerにOnControllerColliderHitを付ける方法はダメでした・・)
PlayerはCharacterControllerを使用して制御をしています。Player自身にRigidbodyを付けれないため、空オブジェクトを作成してPlayerの子要素として、それにRigidbodyとCapsuleColliderを付けています。
その空オブジェクトに鉄球の当たり判定があった時にアニメーションの呼び出しと動きの一時停止をさせたいです。(PlayerにOnControllerColliderHitを付ける方法はダメでした・・)
アニメーションの呼び出しは以下のコードで、PlayerのAnimationを取得して動かすことができました。
```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Trapcol : MonoBehaviour
{//インスペクターにPlayerを格納
   public Animator anim;
   //当たり判定
   void OnTriggerEnter(Collider collider)
   {//トラップタグをもつオブジェクトへ当たった時
       if (collider.gameObject.CompareTag("Trap"))
       {
           anim.Play("Dameged", -1, 0.0f);
           
       }
   }
}
コード
```
  • C#

    15961 questions

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

  • Unity

    11677 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る