Character Controller深度解析


說明:
Character一般用於主角這類用戶控制的物體,它不會受到scene的重力影響,不會被其他物體推。
 
程序中可以使用它的move方法移動它,當他碰到靜態物體時,會停下來,遇到動態物體時會推開他,當然,哲學都是可以通過activegroup老控制的,group至多有32組。
 
character還有上樓梯模式,在某些高度的台階,可以直接上去(stepOffest)
character還可以設置可以走上去的斜坡(slopeLimit)
 
由於character不受到場景的重力影響,所以,用戶要在move函數中自己添加重力因素,也就是說,character可以懸浮在空中,除非那里有其他的activegroup物體;
 
角色控制器中的變量:
isGrounded:着地,在最后的移動角色控制器是否接觸地面;
velocity:角色當前的相對速度;
cllisionFlags:在最后的characterController.Move調用期間,膠囊提的哪個部分和周圍環境相碰撞。
radius:角色膠囊體 的半徑,
height:角色膠囊體的高度。
center:相對於變換位置的角色膠囊體的中心。
slopLimit:角色控制器的坡度洗漱限制,
stepOffest:以米為單位的角色控制器的台階偏移量(台階高度)
detectCollisions:其他剛體和角色控制器能否能夠與本角色控制器相互碰撞。默認值筒倉為enabled;
 
函數:
SimpleMove:

function SimpleMove (speed : Vector3) : bool

以一定速度移動角色;
Move:

function Move (motion : Vector3) : CollisionFlags,

一個更加復雜的移動函數,每次都絕對移動。 

嘗試着通過動力移動控制器,動力只受限制於碰撞。它將沿着碰撞器滑動。CollisionFlags 是發生於Move的碰撞的概要。這個函數不應用任何重力。

 

發送消息:

OnControllerColliderHit:控制器碰撞器相碰,當控制器碰撞一個正在移動的碰撞器時,此函數被調用;

 

Inherited members繼承成員

Inherited Variables繼承變量

  • attachedRigidbody

    碰撞器附加的剛體。
  • isTrigger

    碰撞器是一個觸發器? (是否可以穿越)
  • material

    撞器使用的材質。
  • sharedMaterial

    碰撞器的共享物理材質。
  • bounds

    碰撞器在世界坐標空間的包圍盒。
  • transform

    Transform附加到GameObject(游戲物體)(如無附加則為空)。
  • rigidbody

    Rigidbody附加到GameObject(游戲物體)(如無附加則為空)。
  • camera

    Camera附加到GameObject(游戲物體)(如無附加則為空)。
  • light

    Light附加到GameObject(游戲物體)(如無附加則為空)。
  • animation
    Animation附加到GameObject(游戲物體)(如無附加則為空)。
  •  
  • constantForce

    ConstantForce附加到GameObject(游戲物體)(如無附加則為空)。
  • renderer

    Renderer附加到GameObject(游戲物體)(如無附加則為空)。
  • audio

    AudioSource附加到GameObject(游戲物體)(如無附加則為空)。
  • guiText

    GUIText附加到GameObject(游戲物體)(如無附加則為空)。
  • networkView

    NetworkView附加到GameObject(游戲物體)(只讀)(如無附加則為空)。
  • guiTexture

    GUITexture附加到GameObject(游戲物體)(只讀)(如無附加則為空)。
  • collider

    Collider附加到GameObject(游戲物體)(如無附加則為空)。
  • hingeJoint

    HingeJoint附加到GameObject(游戲物體)(如無附加則為空)。
  • particleEmitter

    ParticleEmitter附加到GameObject(游戲物體)(如無附加則為空)。
  • gameObject

    組件附加的游戲物體。一個組件總是被附加到一個游戲物體。
  • tag

    游戲物體的標簽。
  • name
    The name of the object. //物體的名字
  • hideFlags

    物體是否被隱藏、保存在場景中或被用戶修改?

Inherited Functions繼承函數

  • ClosestPointOnBounds

    到附加碰撞器的包圍盒最近的點。
  • Raycast

    投射一個光線(Ray),它忽略所有碰撞器,除了這個。
  • GetComponent

    如果游戲物體有一個附加,則返回Type類型的組件,如果沒有則為null。
  • GetComponent.<T>
     
  • GetComponent

    如果游戲物體有一個附加,則返回名字類型組件,如果沒有則為null。
  • GetComponentInChildren

    返回Type類型組件,在GameObject或它的任何子物體使用深度優先搜索,僅返回激活的組件。
  • GetComponentInChildren.<T>
     
  • GetComponentsInChildren

    在GameObject或任何它的子物體,返回全部Type類型組件
  • GetComponentsInChildren.<T>
     
  • GetComponents

    在游戲物體返回全部Type類型組件。
  • GetComponents.<T>
     
  • CompareTag
    Is this game object tagged tag?
    游戲物體有被標記標簽么?
  • SendMessageUpwards

    在游戲物體每一個MonoBehaviour和每一個behaviour的祖先上調用名為methodName的方法。
  • SendMessage

    在游戲物體每一個MonoBehaviour上調用名為methodName的方法。
  • BroadcastMessage

    在游戲物體每一個MonoBehaviour和它的全部子物體上調用名為methodName的方法。
  • GetInstanceID

    返回物體的實例ID
  • ToString

    返回游戲物體的名稱。

Messages Sent發送消息

  • OnTriggerEnter

    這個消息是發送給觸動觸發器的碰撞器和剛體(或如果沒有剛體的碰撞器)。注意假如一個碰撞物體同時帶有一個剛體屬性
    那么只發送這個觸發事件。

    當碰撞器other進入觸發器時OnTriggerEnter被調用。
  • OnTriggerExit

    這個消息是發送給觸動觸發器的碰撞器和剛體(或如果沒有剛體的碰撞器)。注意假如一個碰撞物體同時帶有一個剛體屬性
    那么只發送這個觸發事件。

    當碰撞器other停止觸動觸發器時,OnTriggerExit被調用。
  • OnTriggerStay
    這個消息是發送給觸動觸發器的碰撞器和剛體(或如果沒有剛體的碰撞器)。注意假如一個碰撞物體同時帶有一個剛體屬性
    那么只發送這個觸發事件。
     

    注意:OnTriggerStay函數是基於物理計時器,因此它未必每幀都運行。

    也就是說OnTriggerStay是在每一個Time.fixedDeltaTime的時間節點上運行,不是Time.deltaTime的時間節點上運行

    每個碰撞器other觸動觸發器,幾乎在所有的幀OnTriggerStay被調用。
  • OnCollisionEnter

    相比OnTriggerEnter,OnCollisionEnter傳遞Collision類而不是Collider。Collision類包含接觸點,碰撞速度等信息。在這個函數如果你不使用collisionInfo,刪去collisionInfo參數以避免不必要的計算。注意,如果碰撞器附加一個非動力學剛體,也僅發送碰撞事件。


    當collider/rigidbody開始觸動另一個rigidbody/collider時OnCollisionEnter被調用。
  • OnCollisionExit

    相比OnTriggerExit,OnCollisionExit傳遞Collision類而不是Collider。Collision類包含接觸點,碰撞速度等信息。在這個函數如果你不使用collisionInfo,刪去collisionInfo參數以避免不必要的計算。注意,如果碰撞器附加一個非動力學剛體,也僅發送碰撞事件。


    當 collider/rigidbody停止觸動另一個 rigidbody/collider時,OnCollisionExit被調用。
  • OnCollisionStay

    相比OnTriggerStay,OnCollisionStay傳遞Collision類而不是Collider。Collision類包含接觸點,碰撞速度等信息。在這個函數如果你不使用collisionInfo,刪去collisionInfo參數以避免不必要的計算。注意,如果碰撞器附加一個非動力學剛體,也僅發送碰撞事件。


    每個collider/rigidbody觸動rigidbody/collider,將在每幀調用OnCollisionStay。通俗的說,

Inherited Class Functions繼承類函數

  • operator bool

    物體是否存在?
  • Instantiate

    克隆原始物體,並返回克隆的物體
  • Instantiate.<T>
     
  • Destroy
    Removes a gameobject, component or asset.
    刪除一個游戲物體、組件或資源
  • DestroyImmediate

    立即銷毀物體obj,強烈建議使用Destroy代替。
  • FindObjectsOfType

    返回Type類型的所有激活的加載的物體列表
  • FindObjectOfType

    返回Type類型第一個激活的加載的物體。
    operator ==
    
            比較如果兩個物體相同
    • operator !=

      比較如果兩個物體不同
    • DontDestroyOnLoad

      加載新場景的時候使目標物體不被自動銷毀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM