Roll a Ball(滚动小球)

 
用Unity实现一个很基本的游戏操作,相当于吃星星,控制小球在方块区域内吃掉所有的小方块(food),即可获得游戏胜利。

1.游戏场景的实现:
    1〉创建Cube,拉伸scale属性,实现地板平面(貌似现在很多地面都是这么干的),作为Ground
    2〉 创建4个Cube作为四周的围墙
    3〉将围墙全部放到Ground下面,当作子物体,这样做的好处是使整个游戏场景作为一个整体进行操作 

2.食物的实现:
    1〉创建Cube,调整Rotation属性进行旋转至如上状态
    2〉如何实现物体的自动旋转呢?
        只需要在Food下面挂载脚本:
        
void Update () {
this.transform.Rotate (Vector3.up);//每帧都使物体沿y轴旋转
}  
         
 /*对于Vector3.up
         
Vector3 .up
          public static  Vector3   up ;

          Description
          
Shorthand for writing Vector3(0, 1, 0).
           */ 
 

            注意,在里面up是y轴,而不是我们所认为的z轴
    3〉设置成Prefab 

    注意一个问题就是要将cube的collider(碰撞体)设置为Trigger(触发器) ,此时会忽略物体的物理碰撞属性


3.Player的实现
    1〉此处用一个Sphere简单的当作Player处理
    2〉 给Player设置一个Rigidbody(刚体)属性,只有具有刚体属性才能够给物体添加物理学上的力,才能够使物体发生物理学上的运动[可见如果要深入引擎实现底层的话,物理得学好,哈哈]
    3〉给Player设置控制脚本
    
public class player : MonoBehaviour {

private int i = 0;
// Update is called once per frame
void Update () {
float horizontal_move = Input.GetAxis ("Horizontal");//x轴方向输入检测,范围是-1~1
float vertical_move = Input.GetAxis ("Vertical");//z轴方向输入检测,范围是-1~1
this.rigidbody.AddForce (new Vector3(horizontal_move*10,0,vertical_move*10));//给物体施加一个力
}

void OnTriggerEnter(Collider other ){//触发器检测,当进入触发器时进行触发
//destory
//i++
//if i==10,game win
if (other.gameObject.name == "Food") {
GameObject.Destroy (other.gameObject);
i++;
}
if (i == 10) {//吃掉10个食物后游戏结束
Debug.Log("Game Win!");
}
}

}  

4.相机跟随功能:
我们能看到的游戏界面显示出来的实际上就是游戏相机所拍摄到的,那么到底是如何实现人物移动的时候,看到的场景也跟着人物变换的呢 ?
这个就涉及到了相机跟随的一个问题;
在坐标系中,如果能够保持相机相对于游戏物体的相对位置一定的话,那么也就实现了相机的跟随问题。
                public GameObject player;
// Update is called once per frame
void Update ()
{
Vector3 player_position = player.GetComponent<Transform> ().position;
this.GetComponent<Transform> ().position = new Vector3 (player_position.x, player_position.y + 7.1f, player_position.z - 8.57f);
}  

脚本挂载在相机上面, 这样的话相机始终保持在相对游戏物体(0,+7.1,-8.57)的位置,实现了相机的跟随功能。

最后放好 food,就可以开始游戏了。比较值得学习的就是关于相机跟随的实现思想。

[链接:http://pan.baidu.com/s/1i3ztVzJ 密码:9kr2]
——爱生活,乐分享
Poloris 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值