Unity整理内容方便初学者查看(第三篇_刚体,碰撞及射线)
来源:互联网 发布:12864与单片机仿真 编辑:程序博客网 时间:2024/06/06 18:59
****刚体****
Rigidbody RB = GetComponent<Rigidbody>();
获取物体的Rigidbody组件(刚体组件)RB.transform.positon == RB.position;
在游戏中,刚体的位置和它自己本生的位置是一样的.
velocity: 刚体速度属性(是世界坐标系中的,非物体本身坐标系)
RB.velocity = Vector.forward * 速度;
这是给刚体RB添加相对世界坐标系方向上的速度,产生的效果是:
物体就会在这个方向上,按给定速度移动
angularVelocity: 刚体角速度属性 (也是相对世界坐标系)
RB.angularVelocity = Vector3.right*速度;
给刚体RB添加相对于世界坐标系放向上的角速度, 产生的效果是:
物体就会按给定速度在对应的轴向上旋转.
freezeRotation: 冻结旋转
RB.freezeRotation = true;
如果为true则冻结,为False则不冻结.
AddForce (Vector3) :给刚体添加一个力(朝世界坐标系方向)
RB.AddForce (Vector3.forward * 力的大小);
给游戏物体RB的刚体添加相对于世界坐标上某个方向上的力
RB.AddRelativeForce(Vector3.forward * 力的大小);
给当前游戏物体RB施加相对于物体自身当前坐标系的力
在指定点添加相对世界坐标系的一个力
RB.AddForceAtPosition()
给刚体添加相对于世界坐标系中的某个方向的力,这个力可以在刚体的上的任意位置
给当前游戏物体添加一个爆炸力,模拟爆炸效果
AddExplosionForce(爆炸力大小,爆炸点位置,爆炸范围);
RB.AddExplosionForce(1000,RB.position,1,10);
碰撞爆炸效果常用写法:
Rigidbody RB = coll.gameObject.GetComponent<Rigidbody> ();
RB.AddExplosionForce (6000, RB.position/*(爆炸位置)*/, 3/*(爆炸半径)*/);
添加相对力矩
AddRelativeTorque 给刚体添加一个力矩,相对自身坐标系.---->效果:发生旋转
RB.AddRelativeTorque(Vector3.forward * 1000);
RB.MovePosition(T.position);
使刚体RB移动到T位置.
MeshRenderer组件
A.gameObject.GetComponent<MeshRenderer> ().material.color = Color.green;
改变A的颜色为green;
****碰撞****
//碰撞开始一瞬间被调用
void OnCollisionEnter(Collision coll)
{
if (coll.gameObject.name != "Sphere") {
Debug.Log("碰撞开始一瞬间被调用");
}
}
//一直保持碰撞状态的时候被调用
void OnCollisionStay(Collision coll)
{
if (coll.gameObject.name != "Sphere") {
Debug.Log("一直保持碰撞状态的时候被调用")
}
}
//碰撞发生后分离的一瞬间被调用
void OnCollisionExit(Collision coll)
{
if (coll.gameObject.name != "Sphere") {
Debug.Log("碰撞发生后分离的一瞬间被调用");
}
}
Box Collider组件
****触发效果(OnTrigger)****
void OnTriggerEnter(Collider coll)
{
Debug.Log ("进入触发器的时候调用一次");
}
void OnTriggerStay(Collider coll)
{
Debug.Log ("处于某个触发器之中的时候持续调用");
coll.isTrigger = false;
}
void OnTriggerExit(Collider coll)
{
Debug.Log ("退出触发器的时候调用一次");
}
****射线****
Ray ray = new Ray (发射原点(origin),发射方向(direction));
创建射线
Ray myRay = new Ray (transform.position/*发射位置*/, transform.forward/*(当前物体正放向)*//*发射方向*/);
使用Physics类的Raycast方法实现射线碰撞检测功能;
bool Raycast(Ray ray(要发射的射线), out RaycastHit hitInfo(碰撞信息));
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
从主摄像机到鼠标点击位置创建一条射线
0 0
- Unity整理内容方便初学者查看(第三篇_刚体,碰撞及射线)
- Unity整理内容方便初学者查看(第一篇_初识U3D及Transform)
- Unity整理内容方便初学者查看(第二篇_输入Input)
- Unity 射线碰撞
- Unity 碰撞检测、射线
- Unity忽略碰撞,射线
- Unity 射线检测碰撞
- Unity 碰撞检测和射线
- (5)unity入门,刚体、射线、粒子
- unity不使用刚体的碰撞检测
- Unity刚体、碰撞器、实验和总结
- unity基础开发----射线碰撞代码
- unity射线碰撞检测+LayerMask的使用
- 在Unity中用射线检测碰撞
- Unity中射线碰撞试验分享:
- unity中射线碰撞检测总结
- Uinty3D Rigidbody刚体及 Colliders 碰撞体
- ue4碰撞检测及射线查询
- 【java语言程序设计基础篇第十章第三题】
- shell循环2.while、until、select循环和循环控制
- 算法系列—自底向上归并排序
- C语言实现:复制输入字符,且有多个连续空格时只输出一个
- 30. Substring with Concatenation of All Words
- Unity整理内容方便初学者查看(第三篇_刚体,碰撞及射线)
- 生成器(Builder)
- 软件开发工具锦集(持续更新中)
- CodeForces 90B African Crossword【模拟】
- 从c++到c#转换中的一些不同
- P1094 纪念品分组
- 汉诺塔相关,递归(新汉诺塔问题,uva 10795)
- springMVC 用超链接做国际化
- reset.css文件