スプライトシートの一部を手動で描画するにはどうすればよいですか?


9

Unityで作業していますが、2Dゲームで、アニメータが自分がやろうとしていることに対して機能していないことがわかりました。スプライトシートを使用して特定のアニメーションを構築し、同じアニメーションを、セルごとに同じサイズとサイズである他のスプライトで再利用したい。調査の結果、不可能だとわかりました。

代わりに、独自のアニメーションスクリプトを作成しようとしていますが、Unityにスプライトのセクションのみを描画するように指示する方法がわかりません。XNAのようなもので、開始座標と終了座標を使用してスプライトの特定の四角形のみをレンダリングできます。

スプライトシートの一部を手動で描画するにはどうすればよいですか?


3
これはUnityでアニメーションデータを複製せずに少しハックすることで可能です。効果的には、spritesheetAを使用してアニメーションAを再生し、LateUpdateで各SpriteRendererのSpriteをspritesheetBからそのアナログに交換します。このテクニックに関するUnityビデオがありました。後で見つかれば回答として掲載し、詳細を詳しく説明します。これにより、独自のアニメーションシステムを最初から作成しなくても、Unityのネイティブアニメーションシステムを最大限に活用できます。
DMGregory

Spineやその他の骨格アニメーションソフトウェアを試してみてください。これにはスキン機能があり、同じボーンアニメーションを維持できますが、必要に応じてスキンを交換および変更できます。私は個人的にSpineを使用しています。Spineはシンプルで、チュートリアルがあり、すべてが非常にシンプルになるUnityランタイムを備えているからです。欠点はコストがかかることですが、基本バージョンではアニメーションを作成するために必要なすべてが提供されます。プロバージョンはそれをより簡単かつ迅速にします。
サブロン2018

UIで作業する場合はマスクを使用してください
virtouso 2018

回答:


1

私はこれを行うことができ、アニメーションにUnity Mecanimを使用するより簡単なアプローチがあると思います。

手順:-

1)画像からテクスチャ2Dスプライトをプログラムで割り当てることができます。これはグリッドなので、それほど難しくありません。次の回答では、ユーザーが独自のスプライトスライサーを作成し、ディレクトリに保存しています(オプションで、変数に保存するだけです)。コード全体は必要ありません。GetSprites()関数をチェックするだけで、アイデアを得ることができます:)

http://answers.unity3d.com/questions/576799/coding-my-own-auto-slicer-getting-islands-of-pixel.html

2)それができたら、ステップ1で取得したスプライトの配列を維持します。

3)次に、メカニムにプラグインできるこれらのスプライトのアニメーションファイルを作成する必要があります。これには、UnityのSet Curve関数が必要です(以下のリンクを確認してください)。クリップを入手したら、後で使用するために保存するか、現在のゲームインスタンスのみの変数に保存するかは自由です。

http://docs.unity3d.com/ScriptReference/AnimationClip.SetCurve.html

これがあなたの疑問を解決することを願っています:)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.