1. 程式人生 > 程式設計 >unity使用射線實現貼花系統

unity使用射線實現貼花系統

本文例項為大家分享了Unity使用射線實現貼花系統,供大家參考,具體內容如下

老規矩,直接上程式碼:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
/// <summary>
/// 貼花系統
/// </summary>
public class Applique_ZH: MonoBehaviour
{
 [Header("貼花粒子")]
 public Transform _AppliqueParticle;
 void Start()
 {
   //例項化
  _AppliqueParticle = Instantiate(_AppliqueParticle);
 }
 void LateUpdate()
 {
 Applique();
 }
 //貼花實現
 public void Applique()
 {
  //螢幕座標轉射線
  object _Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  //射線物件是:結構體型別(儲存了相關資訊)
  RaycastHit _Hit;
  //發出射線檢測到了碰撞 isHit返回的是 一個bool值
  bool _IsHit = Physics.Raycast((Ray)_Ray,out _Hit,1000,~(LayerMask.GetMask("AppliqueParticle")| LayerMask.GetMask("Click")));
  //EventSystem.current.IsPointerOverGameObject() 滑鼠在UI上面
  if (_IsHit && !EventSystem.current.IsPointerOverGameObject())
  {
   _AppliqueParticle.localPosition = _Hit.point;
   _AppliqueParticle.localRotation = Quaternion.LookRotation(_Hit.normal);
  }
 }
}

最終效果:

unity使用射線實現貼花系統

unity使用射線實現貼花系統

unity使用射線實現貼花系統

unity使用射線實現貼花系統

暫時先這樣吧。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。