美文网首页
Character Controller人物控制

Character Controller人物控制

作者: 李狗多 | 来源:发表于2019-07-05 11:42 被阅读0次

来源https://www.cnblogs.com/Dearmyh/p/9540511.html,做笔记用,侵删

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

加载新场景的时候使目标物体不被自动销毁。

相关文章

网友评论

      本文标题:Character Controller人物控制

      本文链接:https://www.haomeiwen.com/subject/dhmshctx.html