首页 > 技术文章 > 关于Roll A Ball实例练习记录

ClanSun 2018-01-27 13:52 原文

学习中不段进步!

游戏思路:通过键盘控制白色小球,让它“捡起”柠黄色方块,捡起一个加1分,全部捡起游戏胜利!


游戏对象:

Ground:绿色地面   

player:  小球

Obstacle:围墙

PickUps:小方块

 

脚本

  • 键盘控制小球移动
  • 摄像机跟随小球移动
  • 小球捡起方块(也就是消除方块)
  • 得分以及胜利
  • 小方块自己在不停的旋转

1、键盘控制小球移动

 

 

这个需要先给小球添加Rigidbody(刚体)组件,想要让小球移动就需要给小球施加一个力(下面红线是控制在这操作的代码)

private(私有化)一个叫做rd的Rigidbody;      //private可百度

public force=5;

void Start(){                              //初始化

rd=GetComponent<Rigidbody>    //获取这个组件赋给rd

}

void Update(){                               //每一帧都调用,一一般1S=60              

float h=Input.GetAxis("Horizontal");    //Input.GetAxis("Horizontal");键盘控制运动,在X轴移动,  float因为它返回的是-1—1的数

float v=Input.GetAxis("Vertical");        //Input.GetAxis("Vertical");键盘控制运动,在Z轴移动

rd.Addforce(new Vector3(h,0,v)*force);   //在rd上施加一个力,力的方向是 newVector(h,0.v)  力的大小后面乘force,在最上面定义

}

2、摄像机跟随小球移动

 

 

摄像机跟随小球可以说是(摄像机相对于小球的位置不变) //这个脚本绑定在摄像机上

public Transform playertransform;         //transform暂可理解为获取本脚本所对应的游戏对象的位置信息
                                                                Transform则可用来获取其他尤其对象位置信息来作用于本脚本

offset=transform.postiton-playertransform.position ;  //向量差=相机的坐标-小球的坐标

transform.position=offset+playertransform.position;     //再将向量差值加上现在小球所在位置的向量赋给摄像机

3、小球捡起方块(也就是消除方块)

  •  碰撞检测(停顿一下,有碰撞感)
  • 触发检测(没有碰撞感)

将所有方块的Tag设置为PickUp

void OnCollisionEnter(Collision collision){    //可查API,当碰撞时i

if(collision.collider.tag=="PickUp"){      //当标签为PickUp;
Destory(collision.collider.gameObject)   //摧毁这个游戏对象

}

}

触发同理 可查OnTriggerEnter的API  需要勾选消除的 Is Tigger

4、小方块自己在不停的旋转

创建方块的实例perfabs

ttransform.Rotate(new Vectors(0,1,0))   //沿着轴旋转,在这里面一帧时间沿着Y轴旋转1°,并且在 Update函数下

5、得分以及胜利

创建两个UI.tex

 

t

在Player里创建2个public,一个 public text text //需要里面的text属性

一个 public GameObject Wintext 直接使用游戏对象

score++;  得分自加

text.text=score.Tostring();    //将整数型的score转化为字符串并赋值给text

if(score==10){     //当捡钱的方块为10个时

Wintext.SetActive(ture);      //激活Wintext游戏对象,之前取消激活

 

真正的才智是刚毅的志向。 —— 拿破仑

 

推荐阅读