ユニティインパクターアプリケーション

ます。http://www.cnblogs.com/88999660/p/3371184.htmlより転載

ソースを転載示します

(初心者は、まだ予備のノートとして、理解していません)

(:衝突collisionInfo)のパラメータが1三の大コリジョン機能、無効OnCollisionStayあり、OnCollisionEnterとOnCollisionExitを無効に、三つの関数がコールバック関数であり、そこにあります。
 
一般的に2、プレイヤーのプロセスとの衝突に対して弾丸対象物:
Physics.IgnoreCollision(clone.collider、this.collider);
 
collisionInfoを含むオブジェクトのクラスによって生成された弾丸に取り付け3.スクリプト、collisionInfo衝突、衝突オブジェクト情報。また:
弾丸は、オブジェクトのインパクターを打ったことを①collisionInfo.collider、変数collisionInfo.collider.nameに打たされているオブジェクトの名前を取得します(これは、衝突の代わりに名前の種類、およびオブジェクトのオブジェクト名の追加コンポーネントではありません)、多くの場合にこれを使用異なるオブジェクトの衝突判定処理(物理的な世界との弾丸が消えている、敵弾は弾丸と力の動き、弾丸と敵がバックル血液を消えています)。
②collisionInfo.transformは、オブジェクトの変換された打撃特性を得ることができます。
③collisionInfo.contactsはContactPoint []配列です。通常のみcollisionInfo.contacts [0]、接点の衝突点を表します。次の値の回転の結果として、要素0出生の位置、出生の位置として、使用されるときに動的に爆発を発生させる(表面法線方向に沿っているので、より現実的な爆発衝突点):
 
このような散弾銃の放出などのいくつかの銃器、4.箇条書き、時々 (ときどき伴う秋の効果をノックする敵を除く)飛ぶ弾丸ショットで力効果オブジェクトを実行する必要があり、その後、最初の線でオブジェクトヒットの機能かどうかを決定することができ、および弾丸によって打撃を受けますポイント:
(Physics.Raycast(originPosition、方向、hitInfo、距離)){...} IF
//この1つはプレイヤーの体の上にある(すべての弾丸で焼成)、個人的な感触いくつかのシーンやオブジェクトのもの敵が弾丸衝突の衝撃の時点でcollisionInfoを使用するために、追加のスクリプトを取得し、その後、種々の反応を対象と少し良く行います。しかし、力の方向を決定することがより困難であり、あなたは箇条書きのスクリプトを起動し(年生まれの保存を検討することができます)、そしてインパクトのポイントに応じて運動の弾丸の方向を取得し、弾丸はインパクトのy座標のポイントを検討する無重力関心を持っています。
ポイント弾丸を得た後に適用することができる第1の剛性)がオブジェクトかどうかを決定:(衝撃点ヒット
IF(hit.rigidbody)hit.rigidbody.AddForceAtPosition(*力方向、hitInfo.point);
 
 
ローカル5爆発スペースの効果を達成するためのパワー。最初は一定の半径内のすべての爆発球状衝突体を取得する:
衝突[] = Physics.OverlapSphereのコライダー(transform.position、explosionRadius);
この関数は、位置のほかに含まれ、マスクレベルの外半径とデフォルトパラメータ(のためのインパクスクリーニング)。
そして、全ての衝突の体の強さに適用される、構築された結束は爆発力の機能を追加します
(!HIT)foreachの(コライダーでの衝突をヒット){続けば; //防ぐ衝突本体が存在しないのですか?一見余計な? 
//衝突体ヒット剛体プログラムエラーが存在しない防ぐ、剛体衝突特性に爆発力の存在のみを追加します。この区別はまた、(例えば、地形など)爆発の影響からのオブジェクトの数によって設定することができます。
(hit.rigidbody)hit.rigidbody.AddExplosionForce(explosionPower、explosionPos、explosionRadius)IF;
//この関数は、第4のパラメータupwardsModifierを(Nメートルオブジェクトの中心以下の正の数Nの仮想爆発を表す)を含む、適切であるかもしれません仮想物体の下に爆発力を高めるために設定し、クールな効果を吹き。パラメータは、内蔵エフェクトで仮想、適切に大きな爆発や奇妙な物体であることを。
注:AddExplosionForce重力はまた、球状内側範囲を作製するために使用することができる限り、負の力が提供されます。
 
:爆発力は破壊的爆発、離れた最も近い点座標の爆発表面からオブジェクトの各々を計算する最初の必要性によって減衰から計算される必要がある場合に加えて、ケース5では6、
 のVector3 closestPoint = hit.rigidbody.ClosestPointOnBounds(explosionPosition ;)
次に、面中心点座標と爆発からの距離を計算する:フロート距離= Vector3.Distance(closestPoint、 explosionPos)を、
そして最終的に被写体距離減衰が爆発総ダメージの爆発力が受けたダメージの割合として計算されるに従って原理:
フロート損傷(= 1.0F - Mathf.Clamp01(距離/ explosionRadius) )* explosionDamage。

おすすめ

転載: www.cnblogs.com/Damon-3707/p/11307065.html