碰撞

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. How to use base class's assignment operator in C++

    看了android下的代码,好长时间没看了,有个关于C++的知识点不是很清楚,查了下: 如何使用基类中的赋值运算符? 引述自http://stackoverflow.com/questions/122 ...

  2. ADCD 1.9 ZOS 配置 CTCI-W32 TCPIP 网络

    试验步骤:两步走,第一步修改Hercules的配置文件 在hercules 配置文件末尾加上    0E20-0E21 CTCI     -n 0A-00-27-00-00-00  192.168.5 ...

  3. 什么是REST设计风格

    https://zh.wikipedia.org/wiki/REST http://www.infoq.com/cn/articles/rest-introduction

  4. Apache伪静态配置,支持.htaccess配置方法

    第一.编辑httpd.conf文件 A - 在etc/httpd/conf/目录下的httpd.conf 文件,找到: LoadModule rewrite_module modules/mod_re ...

  5. 基于NDK的Android防破解& Android防破解 【转载】

    两篇防破解文章转载 基于NDK的Android防破解:http://blog.csdn.net/bugrunner/article/details/8634585 Android防破解:http:// ...

  6. Lab6: Paxos

    Introduction In labs 6 and 7, you will replicate the lock service using the replicated state machine ...

  7. Linux关闭Tomcat为什么要用Kill,而不是shutdown.sh

    Linux关闭Tomcat为什么要用Kill,而不是shutdown.sh >>>>>>>>>>>>>>>&g ...

  8. 【代码审计】Cscms_v4.1 任意文件删除漏洞实例

    环境搭建: CSCMS :http://www.chshcms.com/ 网站源码版本:Cscms_v4.1正式版(发布日期:2017-06-05) 程序源码下载:https://github.com ...

  9. LinQ的初步学习与总结

    嘿嘿,说起来ORM和LinQ,就感觉离我好遥远的,在学校是没有学习的,所以总感觉学习了LinQ就是大神,现在嘛,终于也体会一点,感觉LinQ只是初步学习,没有太难,当然以后使用在项目中就没有这样的简单 ...

  10. 目前学习.net时间让我摸不着头脑的事情

    呜呜,不太喜欢做笔记,只喜欢把自己不懂的和预习时间有麻烦的简单记下,所以这里也是能可以让我写下我们的学习点滴··· 今天学习了<1>.变量的作用域,在想是不是之前听过的局部变量和全局变量? ...