【ハルシオンブログ】SpriteにPolygonColider2Dつけたんだけど、絵を変えてもColiderがかわらねええええ!!!って時にはこうしました。
こんにちは!坂内っす。
UnityでPolygonColider2Dを付けたSpriteの絵を変えたときに、Coliderが元のままじゃねえかあああ!!
ってことありませんか?

「変更したSpriteの形にCoiliderを合わせたい」
そんな時にはこうすればいいっすよ。
まずは形を変えるSpriteRendererとボタンを用意。

変更する絵としては以下を用意

形変更ボタンを押したときのコードはこちら。
【ChangeShape】
これを実行するとこうなります。

緑の枠がColiderですね。
始めの四角のポリゴンコライダーのまま他の形に変わっても変化しません。
そこで、コードを以下のように変更してみました。
PolygonColider2Dを一度消して、再度つけなおすことで、変更されたSpriteに合わせたPolygonColider2Dが作成されます。

ということで、AddComponentとDestroyでうまくやっちゃってください!
それではあでゅ~ノシ
UnityでPolygonColider2Dを付けたSpriteの絵を変えたときに、Coliderが元のままじゃねえかあああ!!
ってことありませんか?

「変更したSpriteの形にCoiliderを合わせたい」
そんな時にはこうすればいいっすよ。
まずは形を変えるSpriteRendererとボタンを用意。

変更する絵としては以下を用意

形変更ボタンを押したときのコードはこちら。
【ChangeShape】
using UnityEngine;
public class ChangeShape : MonoBehaviour {
public SpriteRenderer graph;
public Sprite[] shape;
int shapeNo = 0;
public void ChangeShapeGraph() {
shapeNo++;
shapeNo = (int)Mathf.Repeat(shapeNo,3);
graph.sprite = shape[shapeNo];
}
}
これを実行するとこうなります。

緑の枠がColiderですね。
始めの四角のポリゴンコライダーのまま他の形に変わっても変化しません。
そこで、コードを以下のように変更してみました。
using UnityEngine;
public class ChangeShape : MonoBehaviour {
public SpriteRenderer graph;
public Sprite[] shape;
int shapeNo = 0;
public void ChangeShapeGraph() {
shapeNo++;
shapeNo = (int)Mathf.Repeat(shapeNo,3);
graph.sprite = shape[shapeNo];
Destroy(graph.gameObject.GetComponent());
graph.gameObject.AddComponent();
}
}
PolygonColider2Dを一度消して、再度つけなおすことで、変更されたSpriteに合わせたPolygonColider2Dが作成されます。

ということで、AddComponentとDestroyでうまくやっちゃってください!
それではあでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】UnityのParticleを一定時間で消す方法・・・?一定時間でオブジェクトを消すクラス。 | 【ハルシオンブログ】Unityでビルドしたアプリのログとかが確認ができるようになったんすね。 »
コメント
| h o m e |