日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Unity3D粒子系统碰撞器抑制、反弹

發布時間:2024/9/30 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity3D粒子系统碰撞器抑制、反弹 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



關于碰撞檢測的主要配置我們看圖中的Collision

第一項:因為是一個,所以這里我選擇的是World

第二項(Dampen):抑制(0~1),選這個為1時(完全抑制),碰撞之后,阻止了粒子,可以使碰撞的粒子消失

第三項(Bounce):反彈(0~2),選完這個之后,可以讓產生碰撞的粒子以某個角度反彈出去

第三項(Lifetime Loss):生命周期損失(0~1),碰撞之后讓粒子損失百分比的生命周期,為1時(生命周期完全損失),可以使粒子消失

第四項(Min Kill Speed):最小清除速度,設置值越大,粒子發生碰撞之后被移除的速度越快,當達到某個值之后,可以近似碰撞之后立即消失

第五項(Collides With):可碰撞范圍,設置可以與該粒子系統碰撞的層

第六項(Collision Quality):碰撞質量,設置發生碰撞的碰撞概率大小,選項三項從上到下由高到低,越低碰撞到的概率就越低

第七項(Send Collision Messages):發送碰撞信息,與下面這個方法有關

[csharp]?view plaincopy

  • //?需要處理的碰撞信息,放在被撞的物體身上??
  • //(官方案例)給碰撞的物體添加粒子移動方向的力
  • public ParticleSystem part;
  • public List<ParticleCollisionEvent> collisionEvents;
  • void Start()
  • {
  • part = GetComponent<ParticleSystem>();
  • collisionEvents = new List<ParticleCollisionEvent>();
  • }
  • void OnParticleCollision(GameObject other)
  • {
  • int numCollisionEvents = part.GetCollisionEvents(other, collisionEvents);
  • Rigidbody rb = other.GetComponent<Rigidbody>();
  • int i = 0;
  • while (i < numCollisionEvents)
  • {
  • if (rb)
  • {
  • Vector3 pos = collisionEvents[i].intersection;
  • Vector3 force = collisionEvents[i].velocity * 10;
  • rb.AddForce(force);
  • }
  • i++;
  • }
  • }

  • 總結一下以上可以使粒子消失的方法有以下三種:

    1)設置Dampen1

    2)設置Lifetime Loss1

    3)設置較大的Min Kill Speed

    ?

    ?

    OnParticleCollision() 函數。

    MonoBehaviour.OnParticleCollision(GameObject)

    當粒子碰撞了collider非Trigger就會觸發綁定了該腳本的 OnParticleCollision 函數。

    這個可以用于游戲對象被粒子擊中時應用傷害到它上面。

    對了,還要把特效的Particle System 中的Collision組件里的Send Collision Messages 的對勾打上,才能使函數生效哦!

    ?

    同一幀中即使一個粒子系統的多個粒子對象均與碰撞體對象發生碰撞,碰撞體對象也只會接收到一條碰撞消息,也就是OnParticleCollision只會被調用一次。

    還可以利用ParticleCollisionEvent數組來處理多個粒子對象碰撞事件事件

    ?

    Unity粒子部分所帶的結構體屬性解析

    ?

    //結構體ParticleCollisionEvent包含的屬性

    public struct ParticleCollisionEvent

    {

    [Obsolete("collider property is deprecated. Use colliderComponent instead, whichsupports Collider and Collider2Dcomponents.")]

    public Collider collider {get; }

    public Component colliderComponent {get; }

    public Vector3 intersection {get; }//碰撞的點在空間中的坐標

    public Vector3 normal {get; } //粒子入射碰撞點的法線方向(eg:如果粒子從X軸正方向入射,則normal輸出為(1,0,0),反之負方向為(-1,0,0))

    public Vector3 velocity {get; }//粒子碰撞時的三維速度向量

    }

    總結

    以上是生活随笔為你收集整理的Unity3D粒子系统碰撞器抑制、反弹的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。