游戏开发的学习记录⑥
项目:射击游戏
开始时间:2022.9.29
(已经结束很久了,一直忘了写,补一下)
新学到的:
- 做小地图,用来看自己和敌人的位置
//获得屏幕分辨率比率
float ratio = (float)Screen.width / (float)Screen.height;
//使摄像机视图永远是一个正方向,rect的前两个参数表示地图位置,后两个参数是地图大小
this.GetComponent<Camera>().rect = new Rect((1 - 0.2f), (1 - 0.2f * ratio), 0.2f, 0.2f * ratio);
- 1
- 2
- 3
- 4
在做小地图这段中,我新认识了Rect,下面是关于官网中rect的截图,官网上的图让我一度认为y值设的越小,距离上方越近。
但是在x值不变的情况下,当y=0.65反而比0.2距离上方近
所以,这里还不是很理解
- 敌人状态的一个转换
m_timer -= Time.deltaTime;
AnimatorStateInfo stateInfo = m_ani.GetCurrentAnimatorStateInfo(0);
//待机且不是过渡状态
if (stateInfo.fullPathHash == Animator.StringToHash("Base Layer.idle") && !m_ani.IsInTransition(0))
{
m_ani.SetBool("idle", false);
if (m_timer > 0)
{
return;
}
//距离小于1.5,进入攻击状态
if (Vector3.Distance(m_transform.position, m_player.m_transform.position) < 1.5f)
{
m_agent.ResetPath();
m_ani.SetBool("attack", true);//攻击
}
else
{
m_timer = 1;//重置定时器
m_agent.SetDestination(m_player.m_transform.position);//设置寻路目标
m_ani.SetBool("run", true);//行走
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
Vector3.Distance:
- 敌人自动转向玩家
void RotateTo()
{
Vector3 targetdir = m_player.m_transform.position - m_transform.position;
Vector3 newDir = Vector3.RotateTowards(transform.forward, targetdir, m_rotSpeed * Time.deltaTime, 0.0f);
m_transform.rotation = Quaternion.LookRotation(newDir);
}
- 1
- 2
- 3
- 4
- 5
- 6
Vector3.RotateTowards:
- 枪的射击
RaycastHit info;//用来保存射线探测结果
//从枪口向摄像机的正方向射出来一条射线,该射线只能与m_layer指定的层碰撞
bool hit = Physics.Raycast(m_muzzlepoint.position, m_camTransform.TransformDirection(Vector3.forward), out info, 100, m_layer);
- 1
- 2
- 3
public static bool Raycast (Vector3 origin, Vector3 direction, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);
- 1
参数 | 意思 |
---|---|
origin | 射线在世界坐标系中的起点 |
direction | 射线的方向 |
maxDistance | 射线应检查碰撞的最大距离。 |
layerMask | 层遮罩,用于在投射射线时有选择地忽略碰撞体 |
queryTriggerInteraction | 指定该查询是否命中触发器 |
成品部分截图:
这部分是自己做了一个简单的登录,因为人机交互作业的实验二是文本交互,可以基于javaweb做网页的登录界面,但还是对unity更熟悉点,所以在这个前面加了登录界面,交了人机交互的作业,我真是个小机灵鬼。
加了一个简单的开始界面。上面两张背景图都是网上找的素材。
这是游戏内的场景。
?一个小记录:
这算是第一个小的3d方面的游戏了,最近没做什么新的了,在研究vr怎么做,真的不懂!!!还没接触代码,还在学一些渲染相关的,又装了做材质的软件,还有建模软件blender,以前用过3dmax,不知道blander好上手不好,但它和unity的配合真的蛮好用的,不用把模型再导进导出了。
(继续加油 ‼ )
评论记录:
回复评论: