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

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

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

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

3607閲覧

衝突したときに二つの物体がくっつく(一緒に動く)ようにしたいです

integral2ydx

総合スコア7

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/10/19 03:27

前提・実現したいこと

衝突したときに二つの物体がくっつく(一緒に動く)ようにしたいです

ここに質問の内容を詳しく書いてください。
最近unityを始めたものです。
二つの物体A(キー操作可能),B(静止)を用意し、AをBに衝突させた際、BはAにくっつくようにしたいです。
調べてみたところ、衝突判定に使う構文はわかるのですが、肝心の衝突したときにくっつくようにするプログラムがわかりません。

Aにはリジッドボディとコリジョン。Bにはコリジョンのみコンポーネントを追加しています。

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

エラーメッセージ

該当のソースコード

Bのソースコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CirclePlayer : MonoBehaviour
{
void OnCollision2D(Collider2D other)
{
GetComponent<Rigidbody>().isKinematic = true;
}

C# ソースコード

試したこと

Kinematicというものが衝突した際にくっつくことができる構文だと思って使いました。
しかし、肝心のくっつくようにするプログラミングがわかりませんでした。予想としては、Aのコードと同じ動きをしなさい。というような命令文がいるのかと思っています。

ここに問題に対して試したことを記載してください。

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

ここにより詳細な情報を記載してください。
始めてこのサイトを使うので、至らない点があれば、おしえてくださると幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

物体Bを物体Aの動作で制御したい場合は、物体Bを物体Aの子供にしてやればよいです。
以下のコードで物体Aを物体Bの親にセットできます。

gameObjectB.transform.parent = gameObjectA.transform;

Kinematicというものが衝突した際にくっつくことができる構文だと思って使いました。

isKinematicはtrueにすると重力などの物理演算の影響を受けなくなるというものです。

投稿2021/10/19 04:57

YOshim

総合スコア1085

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

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

integral2ydx

2021/10/20 06:44 編集

返信ありがとうございます。 次のように書き換えたら Script error: OnCollisionEnter2D This message parameter has to be of type: Collision2D The message will be ignored. と表示されました。 似たような人を探したらファイル名(予約語)が競合しているというような問題でしたが、それにも当てはまらないようです。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CirclePlayer : MonoBehaviour { void OnCollisionEnter2D(Collider2D other) { this.gameObject.transform.parent = GameObject.Find("Player").transform; } }
integral2ydx

2021/10/20 07:07 編集

返信ありがとうございます。親子関係は参考書に乗ってなかったので思いつきませんでしたw エラーはなく解消できたのですが、事前にシーン遷移のプログラムを作ったせいで衝突したとき、シーンチェンジしてしまいました。質問とは別の話になってしまうのですがこの問題の回避方法とかわかりますか?まだ親子関係でぶつかったときにくっつくのは確認できていません。 原因はおそらく物体Aのほうにvoid OnTriggerEnter2D(Collider2D other)にしているため、コリジョンをつけている物体すべてがぶつかっただけでゴール画面に遷移してしまうと考えていますが、otherをなんの文章に書きかえればよいのかわかりません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問