unity碰撞腳本
❶ unity網格碰撞器與OnCollisionEnter
1.標記為凸起的(Convex )的網格碰撞器才能夠和其他網格碰撞器發生碰撞。
2.如果碰撞雙方是兩個網格碰撞器(Mesh Collider)默認不會發生碰撞的,一方需要添加剛體(Rigidbody)並且 勾選Convex
勾選模型Generate Colliders選項並apply,盯辯之後場景中的此模型會自動添加凱純缺mesh Collider組件
碰撞器和剛體設置完成後發生碰撞會觸發void OnCollisionEnter(Collision other)方法,但是需要注意OnCollisionEnter回調方法所在的腳本必須在發生碰撞的一方物體上面掛載著(遇到過把這個回調掛載在多級父物體上結果一直不觸發的情況...)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Collider : MonoBehaviour {
PaperPlaneController ppc;
// Use this for initialization
void Start () {
ppc = GameObject.Find ("main").GetComponent(typeof(PaperPlaneController)) as PaperPlaneController;
}
// 碰撞褲罩檢測
public void OnCollisionEnter(Collision other)
{
// Debug.Log ("接觸地面。。。。。" + other.gameObject.name);
//檢測是否碰撞到地面
if (other.gameObject.tag == "Ground")
{
ppc.receiveGround ();
}
}
}
❷ unity3d碰撞發生時如何在一個腳本中得到碰撞和被碰撞對象
查看collider的相關棗孫廳文檔http://docs.unity3d.com/Documentation/ScriptReference/Collider.html
可以知道,根據類型寫相應的接收凳隱碰撞Messages的函數,從參凱襪數中可以獲得碰撞的物體以及更詳細的信息
❸ unity3d碰撞腳本
修改物體的mesh用GetComponent<MeshFilter>().mesh=mesh,比如Cube修改為Sphere:
GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Cube);//先建立一個Cube
GetComponent<MeshFilter>().mesh = sphere.GetComponent<MeshFilter>().mesh;//把Cube的mesh復制給Sphere
❹ unity 腳本能修改單個碰撞粒子的參數嗎
碰撞參數是屬於particlesystem的,所以不能根據單個粒子修改;
腳本中獲取單個粒子後,可以修改其位置、旋轉、速度等,但不包括碰撞參數;
另外,可以通過腳本獲取粒子的碰撞事件,如果想對碰撞後的粒子進行操作,可以考慮從這里入手;
❺ 編程unity,如何讓2個物體即有碰撞反彈,又能觸發腳本OnTriggerEnter(Collider other) 求詳細方法
移動的要被檢測碰撞的需要加剛體(球),牆可以不用加仔中肢,但需要collider。培指
如果想要觸發OnTrigger需要勾選collider中的 Is Trigger。
球也必需要加collider。collider是檢測碰撞的必要組件
另:你可以看下http://www.cnblogs.com/javawebsoa/archive/2013/05/18/3085818.html
很詳念世細的闡述了各種碰撞的關系,簡單明了。
❻ Unity 2D:玩家角色移動腳本
本文利用剛體實現玩家的移動,使用剛體移動可以產生與其他剛體碰撞立即停止,防止抖動。
選中咱們的角色
選擇我們角色的碰撞體,然後點擊 Edit Collider ,即可在場景中設置我們的碰撞體大小。
因為這里的角色移動是在平面上的,不是橫版闖關的那種形式,因此需要調整剛體的屬性:
在相應的文件夾中右鍵, Create -> C# Script
創建MovementController腳本並打開:
將我們創建的腳本掛在到角色身上,並完成賦值,即可完成角色移動:
❼ Unity3D如何正確調用與修改另一個腳本中的全局變數(在碰撞檢測中)
voidOnCollisionEnter2D(Collision2Dcol)///Collision2Dco1碰撞的那個碰撞物體信息
{
varyk=col.transform.GetComponent<bringkey>();//獲取那個碰撞物體上的類BringKey
if(yk.yellowkey>0)
{
Destroy(gameObject);
yk.yellowkey--;
}
}
要獲取的是已經存在於場景中的對象,繼承MonoBehaviour的類相當於你貼到對象上的一個腳本控制項。你要獲取的是一個已經存在與場景內的對象,不能使用New,OnCollisionEnter2D函數中發生碰撞的那一刻會把與當前物體接觸的那個物體碰撞信息通過參數Collision2D col傳遞進來。可以通過這個傳遞過來的值,修改傳遞過來物體上腳本的參數。