游戏制作之路(7)角色与物品之间的碰撞

阅读: 评论:0

游戏制作之路(7)角色与物品之间的碰撞

游戏制作之路(7)角色与物品之间的碰撞

在前面介绍了地面与角色的关系,通过坐标就可以解决角色不入地的问题。但是如果在场景里有多个物器,比如桌子、台等等,这些物品大小不一样,因此距离也不一样,就不能通过固定设置来达到穿墙而过了,那么怎么办呢?本文就来解决这个问题,在场景里创建几个立方体,按如下摆放:

创建的物体,都需要把y轴的坐标设置为1,这时就刚刚好在地面之上。其它坐标随意设置即可,大体看起来像上图这样就可以。当然,它的大小你也可以看着顺眼的方式来设置,这都没有太大关系,做完这些设置之后,我们按下play来运行一下,就会发现如下图一样,角色可以进入立方体的障碍物里,这跟现实世界里,人不能穿过桌子的现象不符合啊,又要怎么样来修改呢?是否感觉到有点头痛了?其实不用担心,因为unity已经为我们考虑这些问题了,需要使用碰撞检测解决。

不过,仔细的读者,也许会发现这个角色已经有一个collider组件,这个组件是干什么用呢?其实这个组件就是用来碰撞检测的,如果再检查一遍里所有物体都自动带有这个组件,自然就不会出上面的这个问题?难道见鬼了。其实不是,在unity里要实现碰撞检测,不能用使用transform变换来实现,意思就是说,使用这个组件来改变位置和大小,并不会应用碰撞检测系统的功能,因此,必须使用其它工具来实现这个碰撞检测。这个工具就叫做角色控制器Character Controller。那么接着下来先把角色这个collider删除掉,如下图:

接着添加下面的组件:

经过这样操作之后,就可以添加character controller了,如下:

由于添加了这个组件,那么脚本代码里,也需要修改一下,才可以使用这个组件,把代码修改如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class BasicMovement : MonoBehaviour {public float speed = 10.0f;// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {Vector3 input = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));//transform.position += input * speed * Time.deltaTime;gameObject.GetComponent<CharacterController>().Move(input * speed * Time.deltaTime);}
}

在代码里,要使用character controller,就需要使用函数gameObject.GetComponent,gameobject是一个对象,指的是这个脚本所附着的游戏物件,也许你会发现还有一个叫Gameobject类,它是制造gameobject的母体,它是一个类别,gameobject是一个个体,一个实际的人。接着使用GetComponent函数,它有一个尖括号把类型CharacterController引用,这是使用类型定义,这里是获取这种类型的组件,由于绑定这个脚本只有一个这样的组件,就可以使用了。如果不存在,就会返回null。因此,gameObject.GetComponent<CharacterController>(),就是获取到角色控制组件,然后调用它的方法Move进行移动,这样当碰到其它物体,就不会再移动过去,达到碰撞检测的功能。

character controller

角色控制器可以让你更容易的处理有有碰撞的运动,同时不用处理刚体。(也就是说角色控制器负责处理角色的移动,如果添加角色控制器,就不用在添加刚体组件)。 角色控制器不受力的影响,并且只有当你调用move函数时才会移动。他的运动收碰撞的约束。

到这里,就完成了碰撞检测了,运行一下,可以看到遇到障碍物就停下来了,如下图:

最后,你可以愉快地玩耍这个游戏了,不用担心再上天入地。

跟老菜鸟学C++

跟老菜鸟学python

在VC2015里学会使用tinyxml库

在Windows下SVN的版本管理与实战 

 

本文发布于:2024-01-31 04:27:26,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170664644925468.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:之路   角色   物品   游戏
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23