導入
ココスにおける茂み隠れ効果の実装原理。
ゲーム開発では、遮蔽されたモデルの効果を表現するために遠近効果や半透明効果をよく使用します。
この記事では、ココスの王の名誉で草に隠れる効果を実現する方法を紹介します。
この記事のソースプロジェクトは記事の最後で入手できます。友達は自分でそこに行くことができます。
草の中に隠れる効果を実現する方法
Honor of Kings in Cocosで草の中に隠れる効果を実現するには、次の点が必要です。
1. モデルの半透明性
モデルの半透明効果を実現するには、次の2 つの条件が必要です。
- 3D オブジェクトが配置されるレンダリング キューは「透明キュー」です。
- 3D オブジェクトのカラー
alpha
値は127 (半透明) に変更されます。
2. トリガー
モデルの半透明は草に入るときにトリガーされ、草から離れるとモデルの半透明が回復します。次の2 つのイベントが必要です。Collider
-
onTriggerEnter
:他の人がCollider
私のものに入ったときにCollider
トリガーされます。 -
onTriggerExit
:他の人がCollider
自分から離れたときにCollider
トリガーされます。
早速、例を挙げてみましょう。
草の中に隠れるキングチキン
次に、King of Gloryで草の中に隠れる効果を段階的に実装していきます。
1. 環境
エンジンバージョン:Cocos Creator 3.8.1
プログラミング言語: TypeScript
2. リソースの準備
まず、「野菜市場」に行き、「野菜」を 2 つかみ購入します。モデルを作るのが好きな友達は、3dmaxで自分でモデルを作ることができます。まず、 3dmaxでの草の効果を見てみましょう。
次に、と を含むモデルを3dmaxからエクスポートし、それをプロジェクトに追加します。FBX
TGA
モデルをシーンにドラッグすると、真っ白な草が見えます。
芝生を緑に戻すには、次のことを行う必要があります。
- マテリアルを変更するには
Effect
、それを使用しますbuiltin-unlit
。 - 次にチャンネルを
Technique
選択します。transparent
- テクスチャを設定します。
処理が完了すると、次のような効果が得られます。
草の密度が十分ではないため、さらにいくつかをコピーして貼り付けます。
Grass にトリガー イベントを生成させたい場合は、それを追加する必要がありますCollider
。これはここで直接使用されておりBoxCollider
、簡単かつ高速です:
チェックを入れるとトリガーIs Trigger
になります。そうしないと芝生に入ることができなくなります。
3. コードを書く
新しいTussock
コンポーネントを作成し、それを King Chicken にドラッグします。
@ccclass('Tussock')
export class Tussock extends Component {
start() {
}
update(deltaTime: number) {
}
}
start()
メソッドでコンポーネントを取得し、イベントCapsuleCollider
をリッスンします。onTriggerEnter
onTriggerExit
start() {
var collider = this.getComponent(CapsuleCollider);
collider.on('onTriggerEnter', (event: ICollisionEvent) => {
if (event.otherCollider.node.name == "tussock") {
this.setModelTranslucency(true);
}
}, this);
collider.on('onTriggerExit', (event: ICollisionEvent) => {
if (event.otherCollider.node.name == "tussock") {
this.setModelTranslucency(false);
}
}, this);
}
最後に、キング チキンのマテリアルを取得し、その透明度を設定します。material.setProperty('albedo');
setModelTranslucency(flag: boolean) {
const material = this.node.getChildByName("rooster_man").getComponent(RenderableComponent)?.sharedMaterials[0]; // 0 表示第一个材质,根据您的需求修改
material.setProperty('albedo', new Color(255, 255, 255, flag ? 127 : 255));
}
4. 効果実証
一日頑張らないと体全体に不調が出てきます。記事の転送にご協力ください。授業を抜け出すのはもう終わりです。
結論
この記事のソース プロジェクトは、プライベート メッセージでTussock に送信することで入手できます。
最近、著者はQilinzi (ゲーム エンジンとゲーム開発に15 年間深く携わっており、実用的な情報はすべて商業プロジェクトの実践から得ています)からゲストとしてKnowledge Planetに参加するよう招待されました。のために:
- 家庭教師の指導
- 学習上の問題に関するコミュニケーション
- 初心者のための入門編と上級編
- 採用と雇用機会の共有
- 面接の質問集
- 面接体験の共有
一般に、Planet の目標は1 つだけです。それは、高品質のコンテンツを提供し、学習に取り組むことです。興味のある友達は、コードをスキャンして詳細を確認し、サポートしてください。中で待っています。
私は「Billion Dollar Programmer」、ゲーム業界で8年の経験を持つプログラマーです。ゲーム開発において、皆さんのお役に立てれば幸いです。また、皆さんを通して皆さんのお役に立てれば幸いです。
AD: 作者のオンライン ミニゲーム「Snake Handheld Classic」、「Gravity Maze Ball」、「Coloring Journey」をクリックして自分で検索できます。
正直、いいねして見たい!この記事を必要と思われる他の友達と共有してください。ありがとう!
推奨されるコラム:
Honor of Kings がスキル範囲インジケーターをどのように実装しているかご存知ですか?
Cocos の独立系ゲーム開発フレームワークを段階的に構築してきた 8 年の経験