碰撞

Collision. [kəˈliʒən] 碰撞;冲突;(意见,看法)的抵触;(政党等的)倾轧

选择一个需要添加碰撞器的游戏对象后

Component->Physics-

Unity一共为对象提供了6

种碰撞器,分别是Box Collider[kəˈlaidə](盒子碰撞器)、Sphere Collider[ˈkæpsju:l](球体碰撞器)、Capsule Collider

(胶囊碰撞器)、Mesh Collider(网格碰撞器)和Wheel Collider(车轮碰撞器)还有一个Terrain Collider

Collider[kəˈlaidə] 相撞;碰撞;冲突;抵触

物理材质

1Assets- Import Package-Physic Materials

标准资源包中提供了5种常用的物理材质:

  1、弹性材质(Bouncy)[ˈbaunsi] adj.快活的;精神的;有弹性的;自大的

  2、冰材质(Ice)

  3、金属材质(Metal)[ˈmetl] n.金属;金属元素;成色;金色

  4、橡胶材质(Rubber)[ˈrʌbə] adj.橡胶制成的

  5、木头材质(Wood)。

2、除了可以使用Unity标准资源包中的5款物理材质,也可以自行创建物理材质。创建新物理材质的方法如下,在Project视图中点击“Create”→“Physic Material”菜单项即可

using UnityEngine;
using System.Collections; public class _6_3 : MonoBehaviour
{
/// <summary>
/// 角色控制器对象
/// </summary>
private CharacterController controller = null; /// <summary>
/// 角色移动的速度
/// </summary>
private float moveSpeed = 30.0f; /// <summary>
///角色旋转的速度
/// </summary>
private float rotateSpeed = 3.0f; ////碰撞的游戏对象
private GameObject colliderObj = null;
// Use this for initialization
void Start()
{
//获取角色控制器对象
controller = GetComponent<CharacterController>();
} private void OnGUI()
{
//控制角色旋转
if (GUILayout.RepeatButton("向左旋转"))
{
transform.Rotate(, -rotateSpeed, );
}
if (GUILayout.RepeatButton("向右旋转"))
{
transform.Rotate(, rotateSpeed, );
} #region 移动
//SimpleMove() 只适用于平面中的移动 2 Move()方法适用于所有方向的移动,所以它可以实现游戏对象任意角度的飞行与移动效果。
//在开发中,尽量使用Move()方法来控制角色移动,因为它完全可以取代SimpleMove()方法,并且使用它移动角色更为灵活
#endregion
//控制角色移动 ×必须添加了角色控制器才有效 选择游戏对象Component-Physics-Character Controller
#region 移动
if (GUILayout.RepeatButton("向前移动"))
{
controller.SimpleMove(Vector3.forward * moveSpeed);//其参数为角色移动的方向,只支持x轴与z轴方向的移动
}
if (GUILayout.RepeatButton("向后移动"))
{
controller.SimpleMove(Vector3.back * moveSpeed);
}
if (GUILayout.RepeatButton("向左移动"))
{
controller.SimpleMove(Vector3.left * moveSpeed);
}
if (GUILayout.RepeatButton("向右移动"))
{
controller.SimpleMove(Vector3.right * moveSpeed);
}
if (GUILayout.RepeatButton("Move向右移动-飞了"))
{
controller.Move(Vector3.right * moveSpeed);
}
#endregion #region 飞行
//可以使用transform.TransformDirection()方法得到当前主角移动时面朝的方向
if (GUILayout.RepeatButton("起飞"))
{
transform.Translate(, , );
}
if (GUILayout.RepeatButton("降落"))
{
transform.Translate(, -, );
}
#endregion if (controller.collisionFlags == CollisionFlags.Sides)
{
if (controller)
{
if (colliderObj != null)
{
GUI.color = Color.yellow;
GUI.Label(new Rect(, , , ), "碰撞游戏的对象为:" + colliderObj.name);
}
}
}
} #region 碰撞检测
//角色控制器可感应游戏对象之间的碰撞,检测它们碰撞时,需要调用父类方法OnControllerColliderHit()
void OnControllerColliderHit(ControllerColliderHit hit)
{
//得到碰撞的游戏对象
colliderObj = hit.gameObject;//使用hit.gameObject引用,即可获取角色控制器组件碰撞后的游戏对象
}
#endregion // Update is called once per frame
void Update()
{ }
}

Unity3D笔记十五 碰撞、移动的更多相关文章

  1. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  2. (C/C++学习笔记) 十五. 构造数据类型

    十五. 构造数据类型 ● 构造数据类型概念 Structured data types 构造数据类型 结构体(structure), 联合体/共用体 (union), 枚举类型(enumeration ...

  3. (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)

    一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...

  4. Unity3D笔记 愤怒的小鸟<五> 小鸟动画+Unity3D如何设置断点调式

    前言:实现小鸟的动画,之前吐槽过js写U3D,就改成了C#来写,没想到遇到问题了. 实现的效果 using UnityEngine; using System.Collections; /// < ...

  5. MySQL学习笔记十五:优化(2)

    一.数据库性能评测关键指标 1.IOPS:每秒处理的IO请求次数,这跟磁盘硬件相关,DBA不能左右,但推荐使用SSD. 2.QPS:每秒查询次数,可以使用show status或mysqladmin ...

  6. 【慕课网实战】Spark Streaming实时流处理项目实战笔记十五之铭文升级版

    铭文一级:[木有笔记] 铭文二级: 第12章 Spark Streaming项目实战 行为日志分析: 1.访问量的统计 2.网站黏性 3.推荐 Python实时产生数据 访问URL->IP信息- ...

  7. Unity3D笔记十八 GL图像库

    1.绘制2D图像的时需要使用GL.LoadOrtho()方法来将图形映射到平面中. 2.所有绘制相关的内容都要写在OnPostRender()方法中. 3.有关GL图像库的脚本需要绑定到Hierarc ...

  8. angular学习笔记(十五)-module里的'服务'

    本篇介绍angular中的模块:module 在笔记(二)http://www.cnblogs.com/liulangmao/p/3711047.html里已经讲到过模块,这篇主要讲模块的 '服务' ...

  9. Java学习笔记十五:Java中的成员变量和局部变量

    Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...

随机推荐

  1. rlwrap安装报错You need the GNU readline 解决方法

    首先大家肯定知道rlwrap是干什么的? 在linux以及unix中,sqlplus的上下左右.回退无法使用,会出现乱码情况.而rlwrap这个软件就是用来解决这个的.   这个错误曾经困扰我很久很久 ...

  2. 【LSTM】Understanding-LSTMs

    http://colah.github.io/posts/2015-08-Understanding-LSTMs/

  3. webGL 光照

    1.着色(shading) 在三维图形学术语“着色”的真正含义就是,根据光照条件重建“物体各表面明暗不一的效果”的过程.明白着色过程,需要考虑两件事:    1.发出光线的光源类型.    2.物体表 ...

  4. ubuntu alsa

    今天要在linux下搞音频编程,在网上查阅了一下资料,网上很多资料都是在linux下直接对/dev/dsp进行编程的,因为在以往的linux系统中,我们是可以通过cat  xxx.wav /dev/d ...

  5. 02-centOS6.7安装

    CentOS6.5在VMware10中安装 1.启动VMware的画面 2.点击File--->New Virtual Machine 创建一台新虚拟机 3.在弹出框中选择典型安装 4.选择I ...

  6. 7 -- Spring的基本用法 -- 8... 抽象Bean与子Bean;Bean继承与Java继承的区别;容器中的工厂Bean;获得Bean本身的id;强制初始化Bean

    7.8 深入理解容器中的Bean 7.8.1 抽象Bean与子Bean 把多个<bean.../>配置中相同的信息提取出来,集中成配置模版------这个配置模版并不是真正的Bean,因此 ...

  7. SpringBoot(三)-- 整合FreeMarker模板

    1.pom依赖 <!-- 引入freeMarker的依赖包. --> <dependency> <groupId>org.springframework.boot& ...

  8. Python 基础进阶

    函数的定义 函数的参数 函数的默认参数 函数的变量 函数的返回值 函数的多类型传值 函数的冗余参数 函数的递归调用 匿名函数 高阶函数 内建函数 模块与包 面向对象 类的定义 类的属性 类的内置属性 ...

  9. 计算直线与WGS84椭球的交点

    /************************************************************************/ /*线段与WGS84椭球求交 x^2/a^2+y^ ...

  10. 【译】Apache Flink Kafka consumer

    Flink提供了Kafka connector用于消费/生产Apache Kafka topic的数据.Flink的Kafka consumer集成了checkpoint机制以提供精确一次的处理语义. ...