Unity学习-碰撞检测(七)

Unity脚本说明

Unity支持语言:
C#(主流),JavaScript,Boo
创建脚本:
【Assets-Create-C# Script】

学习案例

布置场景:
添加一个Plane,3个Cube,一个Directional light
设置启动项(Preferences)
导入UnityVS,方便用vs开发unity
【Assets-Import Package-Visual Studio 2014 Tools】
写一个让方块移动的脚本(Move)
【Assets-Create-C# Script】
修改脚本用VS打开
【Edit-Preferences-External Tools-选择VS2013】
 
编写脚本
双击Move脚本,然后打开,写上脚本
编写方块移动脚步(Move.cs)

//注意Move的名字是否与你新建脚本名字相同
public class Move : MonoBehaviour
{
    //类似一个面向组件的接口,如果是public的话,在组件中可以看到一个叫go的属性
    private GameObject go;
    //初始化程序
    void Start ()
    {
        //找到 名字叫Cube4的 游戏对象
        go = GameObject.Find("Cube4");
        //设置游戏对象的颜色,在渲染组件中
        go.renderer.material.color = Color.red;
    }
    // 游戏运行时一帧一帧的,每一帧都要调用Update()方法
    void Update () {
        //在每一帧当中 都时时的检查 有没有按下键盘
        if (Input.GetKey(KeyCode.A))
        {
            //Time.deltaTime是帧的单位,这里是5个单位
            //通过查看坐标系,确定x,y,z对应的上下左右
            //Space.Self自身坐标系
            go.transform.Translate(0, 0, 5*Time.deltaTime, Space.Self);
        }
        if (Input.GetKey(KeyCode.D))
        {
            go.transform.Translate(0, 0, -5*Time.deltaTime, Space.Self);
        }
        if (Input.GetKey(KeyCode.S))
        {
            go.transform.Translate(-5*Time.deltaTime,0,0,Space.Self);
        }
        if (Input.GetKey(KeyCode.W))
        {
            go.transform.Translate(5*Time.deltaTime,0,0,Space.Self);
        }
    }
}

将该脚本拉到Camera中,在Inspector中可以看到

此时,运行游戏,可以通过w,a,s,d进行上下左右移动了,但是这个游戏对象撞在一起回重叠,我们想要的效果是可以碰撞。

设置刚体(Rigidbody)
【在Hierarchy中选择Cube,在工具栏中Component-Physics-Rigidbody】四个Cube都要设置
编写碰撞检测脚步(PZJC.cs)

代码如下

public class PZJC : MonoBehaviour {

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
    /// <summary>
    /// 每次游戏对象发生碰撞的时候 都会执行此方法
    /// </summary>
    /// <param name="co">可以获得被撞的游戏对象</param>
    void OnCollisionEnter(Collision co)
    {
        co.gameObject.renderer.material.color = Color.blue;
    }
}

因为操作的Cube4,那么就把该脚本拉给Cube4

此时运行游戏,操作

因为Cube4最先碰撞到的是Plane,所有Plane会变色

时间: 2024-10-08 06:47:08

Unity学习-碰撞检测(七)的相关文章

MyBatis学习总结(七)——Mybatis缓存(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(七)--Mybatis缓存 一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空. 2. 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,Hash

java基础知识回顾之java Thread类学习(七)--java多线程通信等待唤醒机制(wait和notify,notifyAll)

1.wait和notify,notifyAll: wait和notify,notifyAll是Object类方法,因为等待和唤醒必须是同一个锁,不可以对不同锁中的线程进行唤醒,而锁可以是任意对象,所以可以被任意对象调用的方法,定义在Object基类中. wait()方法:对此对象调用wait方法导致本线程放弃对象锁,让线程处于冻结状态,进入等待线程的线程池当中.wait是指已经进入同步锁的线程,让自己暂时让出同步锁,以便使其他正在等待此锁的线程可以进入同步锁并运行,只有其它线程调用notify方

第十七篇:博采众长--初探WDDM驱动学习笔记(七)

基于WDDM驱动的DirectX视频加速重定向框架设计与实现 现在的研究生的论文, 真正质量高的, 少之又少, 开题开得特别大, 动不动就要搞个大课题, 从绪论开始到真正自己所做的内容之间, 是东拼西凑地抄概念, 抄公式, 达到字数篇幅的要求, 而自己正真做了什么, 有哪些实际感受, 做出的内容, 相比前面的东拼西凑就几点内容, 之后就草草结束, 步入感谢的段落. 原因不光只有学生自己, 所谓的读研, 如果没有一个环境, 学生有再大的愿望, 再强的毅力, 到头来也只是空无奈. 有些导师要写书,

马哥学习笔记七——LAMP编译安装之MYSQL

1.准备数据存放的文件系统 新建一个逻辑卷,并将其挂载至特定目录即可.这里不再给出过程. 这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录. 2.新建用户以安全方式运行进程: # groupadd -r mysql # useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql # chown -R mysql:mysql /mydata/data 3.安装并初始化my

Lua学习笔记(七):迭代器与泛型for

1.迭代器与闭包 迭代器是一种支持指针类型的结构,它可以遍历集合的每一个元素.在Lua中我们常常使用函数来描述迭代器,每次调用该函数就返回集合的下一个元素. 迭代器需要保留上一次成功调用的状态和下一次成功调用的状态,也就是他知道来自于哪里和将要前往哪里.闭包提供的机制可以很容易实现这个任务.记住:闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量.每次闭包的成功调用后这些外部局部变量都保存他们的值(状态).当然如果要创建一个闭包必须要创建其外部局部变量.所以一个典型的闭包的结构包含

python学习笔记七:条件&循环语句

1.print/import更多信息 print打印多个表达式,使用逗号隔开 >>> print 'Age:',42 Age: 42   #注意个结果之间有一个空格符 import:从模块导入函数 import 模块 from 模块 import 函数 from 模块 import * 如果两个模块都有open函数的时候, 1)使用下面方法使用: module1.open()... module2.open()... 2)语句末尾增加as子句 >>> import ma

swift学习笔记(七)自动引用计数

与Object-c一样,swift使用自动引用计数来跟踪并管理应用使用的内存.当实例不再被使用时,及retainCount=0时,会自动释放是理所占用的内存空间. 注:引用计数仅适用于类的实例,因为struct和enumeration属于值类型,也就不牵涉引用,所以其存储和管理方式并不是引用计数. 当一个实例被初始化时,系统会自动分配一定的内存空间,用于管理属性和方法.当实例对象不再被使用时,其内存空间被收回. swift中的引用类型分为三种,即Strong强引用,weak弱引用和无主引用unw

前端学习 第七弹: Javascript实现图片的延迟加载

前端学习 第七弹: Javascript实现图片的延迟加载 为了实现图片进入视野范围才开始加载首先: <img    src="" x-src="/acsascasc.jpg"> 这时src是空的没有加载图片 $(window).scroll(function (){ $("img").each(function(){ if ($(this).src == ""){ if ( ($(this).offset().t

unity学习--003:角色控制器(中)

在上篇 unity学习--003:角色控制器(上)中,看了点角色控制的基本实现方法,鼠标和键盘控制比较粗糙的实现. 在这篇中,主要介绍几个unity封装的角色控制方法, 然后预计在下篇中综合介绍几种主流的角色控制方法. 话不多说,开搞: 依旧是上次拖过来的几个模型 不过,这次添加了地形,素材,和天空盒,自然光,至于怎么加的,请看这里 添加地形等 不在黑黑的,心情也好点了,下面来介绍几种unity自带的角色控制操作.(这些方法都是unity自带的API) 1.CharacterController