博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3D笔记十五 碰撞、移动
阅读量:4709 次
发布时间:2019-06-10

本文共 3317 字,大约阅读时间需要 11 分钟。

碰撞 

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{    ///     /// 角色控制器对象    ///     private CharacterController controller = null;    ///     /// 角色移动的速度    ///     private float moveSpeed = 30.0f;    ///     ///角色旋转的速度    ///     private float rotateSpeed = 3.0f;    ////碰撞的游戏对象    private GameObject colliderObj = null;    // Use this for initialization    void Start()    {        //获取角色控制器对象        controller = GetComponent
(); } private void OnGUI() { //控制角色旋转 if (GUILayout.RepeatButton("向左旋转")) { transform.Rotate(0, -rotateSpeed, 0); } if (GUILayout.RepeatButton("向右旋转")) { transform.Rotate(0, rotateSpeed, 0); } #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(0, 1, 0); } if (GUILayout.RepeatButton("降落")) { transform.Translate(0, -1, 0); } #endregion if (controller.collisionFlags == CollisionFlags.Sides) { if (controller) { if (colliderObj != null) { GUI.color = Color.yellow; GUI.Label(new Rect(200, 100, 200, 100), "碰撞游戏的对象为:" + colliderObj.name); } } } } #region 碰撞检测 //角色控制器可感应游戏对象之间的碰撞,检测它们碰撞时,需要调用父类方法OnControllerColliderHit() void OnControllerColliderHit(ControllerColliderHit hit) { //得到碰撞的游戏对象 colliderObj = hit.gameObject;//使用hit.gameObject引用,即可获取角色控制器组件碰撞后的游戏对象 } #endregion // Update is called once per frame void Update() { }}

 

 

 

 

转载于:https://www.cnblogs.com/PEPE/p/3530602.html

你可能感兴趣的文章
(转)关于sql和MySQL的语句执行顺序(必看!!!)
查看>>
UVALive 3668 A Funny Stone Game(博弈)
查看>>
信息论随笔2: 交叉熵、相对熵
查看>>
再学习之MyBatis.
查看>>
CodeWars题目筛选
查看>>
MySQL— 索引
查看>>
电子书下载:Professional Web Design: Techniques and Templates, 4th Edition
查看>>
10要点解决IE6兼容性问题
查看>>
Seven Python Tools All Data Scientists Should Know How to Use
查看>>
cocos2d-x学习之路(二)——分析AppDelegate和HelloWorldScene文件
查看>>
Asp.net 对于服务器控件添加Client端方法
查看>>
在Salesforce中创建Approval Process
查看>>
NFS服务搭建与配置
查看>>
python计算文件md5值
查看>>
android 4.1 Emulator Skins
查看>>
Web站点防注入注意事项(转)
查看>>
第0次作业
查看>>
广播接收器——接收系统广播
查看>>
亿能测试资讯_2013-8-11
查看>>
北京地铁月度消费总金额计算(Python版)
查看>>