Unityで2Dの積み上げゲームを作っているのですが、オブジェクトが乗った状態で土台を動かすとグラついてしまい、すぐに積み上げたものが崩れてしまいます。なので、グラつきをなくす(くっつく)ようにしたいのですが、上手くいきません。たくさん調べてみたのですが詳しく書いてあるようなものが見つからず困っている状況なので、解決方法をお教えいただけると幸いです。
ゲームとしては、「アイスクリーム積んでみた - カフェ https://unityroom.com/games/icecreamstack」こちらのようなものにしてみたいと思っています。
現在のオブジェクトと土台のコードは下記の通りです。
C#
1//オブジェクトのコード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5 6public class ObjectController : MonoBehaviour 7{ 8 Rigidbody2D rigid; 9 // Start is called before the first frame update 10 void Start() 11 { 12 13 } 14 15 // Update is called once per frame 16 void Update() 17 { 18 //-5未満でオブジェクト削除 19 if(transform.position.y<-5) 20 { 21 Destroy(gameObject); 22 } 23 } 24 25 void OnCollisionEnter2D(Collision2D collision) 26 { 27 //床にぶつかったらオブジェクト削除 28 if (collision.gameObject.tag == "Floor") 29 { 30 Destroy(gameObject); 31 } 32 } 33 34 void OnCollisionStay2D(Collision2D collision) 35 { 36 //オブジェクト同士を親子関係に 37 if (collision.gameObject.tag == "Object"|| collision.gameObject.tag == "Object2" || collision.gameObject.tag == "Object3" ) 38 { 39 collision.gameObject.transform.SetParent(this.transform); 40 } 41 } 42 43 void OnCollisionExit2D(Collision2D collision) 44 { 45 //離れたら親子関係削除 46 if (collision.gameObject.tag == "Object" || collision.gameObject.tag == "Object2" || collision.gameObject.tag == "Object3" ) 47 { 48 collision.gameObject.transform.SetParent(null); 49 } 50 } 51} 52
C#
1//土台のコード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using UnityEngine.SceneManagement; 6 7public class PlayerController : MonoBehaviour 8{ 9 Rigidbody2D rigid; 10 11 // Start is called before the first frame update 12 void Start() 13 { 14 rigid = GetComponent<Rigidbody2D>(); 15 } 16 17 // Update is called once per frame 18 void Update() 19 { 20 if (Input.GetKey(KeyCode.LeftArrow)) 21 { 22 rigid.MovePosition(transform.position - transform.right * 3.5f * Time.deltaTime); 23 } 24 if (Input.GetKey(KeyCode.RightArrow)) 25 { 26 rigid.MovePosition(transform.position + transform.right * 3.5f * Time.deltaTime); 27 } 28 } 29 30}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/16 08:03
2020/09/17 02:36 編集
2020/09/17 09:48
2020/09/17 10:07 編集
2020/09/17 11:27
2020/09/17 12:41
2020/09/17 12:57
2020/09/17 13:06
2020/09/17 13:14