2015/9/23
从6月份大学正式毕业时,觉得自己U3D的技术学的不深,只是皮毛,自学由于环境和自己所致一直达不到自己想要的效果,刚好看到泰课培训U3D招生因为以前一直都是听泰课的视频教程觉得水平还是不错的,故向单位申请去泰课培训,本只是偿试不报希望谁只经过几经波折最后单位领导还是答应了送我来泰课进行为期四个月的培训,在些非常感谢单位 各级领导,特别是boss。
好了,话不多说今天是培训上课的第一天。
今天所讲内容不多,直接以一个经典游戏Arkanoid(打砖块)开始。
一个简单的游戏界面如下图:
底下一个球排,上面是几排的方块, 然后通过重力作用作中间使小球向下掉落,再通近反弹材质使的小球反弹,反弹的小球碰撞上面的方块,方块消失。
流程分为以下几步:
1、给球拍添加碰撞合和刚体组件,由于球拍只能在X轴上运动,固要将其刚体上的Y与Z轴冻结,为防保险也要将其重力设为0;
2、由于球拍是可以左右移动的,故用代码实现左右移动,代码实现如下:
using UnityEngine;
using System.Collections;
public class rackte : MonoBehaviour {
private Rigidbody2D rockteRigibody2D;
private float Speed;
void Start () {
rockteRigibody2D = GetComponent<Rigidbody2D>()
}
void Update () {
Speed = Input.GetAxisRaw("Horizontal") * 100;
rockteRigibody2D.velocity = Vector2.right * Speed;
}
}
//注意在移动上也可以用transform.Translate()方法
rigidBody.velocity表示速度(已包含方向 ),具体请参考另一位网友的博客http://blog.youkuaiyun.com/lihuozhiling0101/article/details/38663909?utm_source=tuicool
3、小球控制,小球的主要活动包含下落、碰撞反弹,其中反弹还包括不同方向的反弹。球的反弹方向直接是球的碰撞点和中心点两点间的向量,由于相减Y为是0,所以设Y为1;代码如下:
using UnityEngine;
using System.Collections;
public class ball : MonoBehaviour {
private Rigidbody2D ballRigibody2D;
private float Speed = 40;
public GameObject rocket;
void Start () {
ballRigibody2D = this.GetComponent<Rigidbody2D>();
}
void OnCollisionEnter2D(Collision2D coll)
{
if(coll.gameObject.name == "racket")
{
float Dir = (transform.localPosition.x - coll.gameObject.transform.localPosition.x) / (33 / 2);
Vector2 DirVec = new Vector2(Dir, 1);
ballRigibody2D.velocity = DirVec * Speed;
}
}
}
4、当小球与砖块相碰,销毁砖块。