Unity3D笔记十五 碰撞、移动
碰撞
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ə] 相撞;碰撞;冲突;抵触
物理材质
1、Assets- 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笔记十五 碰撞、移动的更多相关文章
- python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
- (C/C++学习笔记) 十五. 构造数据类型
十五. 构造数据类型 ● 构造数据类型概念 Structured data types 构造数据类型 结构体(structure), 联合体/共用体 (union), 枚举类型(enumeration ...
- (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)
一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...
- Unity3D笔记 愤怒的小鸟<五> 小鸟动画+Unity3D如何设置断点调式
前言:实现小鸟的动画,之前吐槽过js写U3D,就改成了C#来写,没想到遇到问题了. 实现的效果 using UnityEngine; using System.Collections; /// < ...
- MySQL学习笔记十五:优化(2)
一.数据库性能评测关键指标 1.IOPS:每秒处理的IO请求次数,这跟磁盘硬件相关,DBA不能左右,但推荐使用SSD. 2.QPS:每秒查询次数,可以使用show status或mysqladmin ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记十五之铭文升级版
铭文一级:[木有笔记] 铭文二级: 第12章 Spark Streaming项目实战 行为日志分析: 1.访问量的统计 2.网站黏性 3.推荐 Python实时产生数据 访问URL->IP信息- ...
- Unity3D笔记十八 GL图像库
1.绘制2D图像的时需要使用GL.LoadOrtho()方法来将图形映射到平面中. 2.所有绘制相关的内容都要写在OnPostRender()方法中. 3.有关GL图像库的脚本需要绑定到Hierarc ...
- angular学习笔记(十五)-module里的'服务'
本篇介绍angular中的模块:module 在笔记(二)http://www.cnblogs.com/liulangmao/p/3711047.html里已经讲到过模块,这篇主要讲模块的 '服务' ...
- Java学习笔记十五:Java中的成员变量和局部变量
Java中的成员变量和局部变量 一:成员变量: 成员变量在类中定义,用来描述对象将要有什么 成员变量可以被本类的方法使用,也可以被其他类的方法使用,成员变量的作用域在整个类内部都是可见的 二:局部变量 ...
随机推荐
- swig和angular双花括号的冲突
swig和angular都用{{name}}来作为模板中变量的取值, 那么要共用的话怎么办: {% raw %}{{ foobar }}{% endraw %} 或者 config(['$interp ...
- C++的UML类图
OOAD(object-oriented analysis and design)面向对象分析和设计 UML(Unified Modeling Language)统一建模语言.可以清晰表达任何OOAD ...
- ASP.NET用DataSet导出到Excel
//读取临时文件 GYYW.DA.Common.Base_SqlDataBase daBZDM = new GYYW.DA.Common.Base_SqlDataBase(); DataS ...
- IOS 应用官方接口地址
地址: http://www.apple.com/itunes/affiliates/resources/documentation/itunes-store-web-service-search-a ...
- Redis Cluster 简单安装配置
1 新建目录 “/app/redis”,输入命令 mkdir -p /app/redis 2 先安装ruby-2.3.1.tar.gz 3 测试ruby是否安装成功,输入命令:gem,如果显示以下信息 ...
- Mesos 入门教程
Mesos提供了高效.跨分布式应用程序和框架的资源隔离和共享,支持Hadoop. MPI.Hypertable.Spark等. Mesos是Apache孵化器中的一个开源项目,使用ZooKeeper实 ...
- hbase2.0.0-安装部署
依赖hadoop 环境,我这边的版本是hadoop-2.6.5 选择hbase2.0.0版本的时候,去官网查看支持的hadoop版本 1.伪分布式安装 下载:http://mirror.bit.edu ...
- YUV格式学习笔记
YUV与RGB表现图像的方法不同,其采用的是一个亮度信号加两个色差信号的方式来表现图像.其中UV表示的是CbCr,常见的YUV格式有:YUV4:2:0,YUV4:2:2,YUV4:1:1,YUV4:4 ...
- 手机CPU天梯图2018年5月最新版
话不多说,以下是2018年5月最新的手机CPU天梯图精简版,由于最近一两个月,芯片厂商发布的新Soc并不不多,因此这次天梯图更新,主要是来看看今年主流手机厂商都流行使用哪些处理器. 手机CPU天梯图2 ...
- 基于Cocos2d-x学习OpenGL ES 2.0系列——编写自己的shader(2)
在上篇文章中,我给大家介绍了如何在Cocos2d-x里面绘制一个三角形,当时我们使用的是Cocos2d-x引擎自带的shader和一些辅助函数.在本文中,我将演示一下如何编写自己的shader,同时, ...