Unity3D官方推荐教程roll a bal案例

Unity3D官方推荐教程roll a bal案例

首先声明本人菜鸟一枚,此博客只是记录一下学习过程,虽说是跟着教程一步一步做的,但是在做的过程当中也遇到了很多问题(菜是原罪),这些问题精良写在了文中,仅供参考!大神们手下留情,不喜勿喷,谢谢!

1.游戏界面与台球桌类似,需要创建一个3Dplan平面和4个拉长的cube,以及一个球体和八个小型cube

游戏界面和台球桌类似,游戏对象也十分简单,这里就不做赘述。此游戏主要是实现:通过控制球体(player)吃掉在plan面上旋转的cube(items)。

2.各物体的属性设置

这里的payer属性千万不要设置box colliider属性
这里的payer属性千万不要添加box colliider属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
右击Hierachy面板,选择UI,选择Text,调整文本框大小和位置,以及显示的内容字体和颜色如下图所示:在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerCovtroller : MonoBehaviour {
    public Text lbcount;
    public Text lbwin;
    private Rigidbody rbd;
    public float Force;
    private int count;
    // Use this for initialization
 void Start () {
        rbd = GetComponent <Rigidbody> ();
        lbwin.gameObject.SetActive(false);
 }
 
 // Update is called once per frame
 void Update () {
  
 }
    private void FixedUpdate()//对刚体组件的操作,时间间隔要是一致的,所以不能放到
        //update 方法里面去
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Vector3 moveDiy = new Vector3(h, 0, v);
        rbd.AddForce(moveDiy* Force);
    }
    private void OnTriggerEnter(Collider other)//当进入另外一个物体时触发该方法
    {
        other.gameObject.SetActive(false);
        RefreshUI();
    }
    void RefreshUI()
    {
        count += 1;
        lbcount.text = "Eat Count:" + count;
        if (count >= 8)
        {
            lbwin.gameObject.SetActive(true);
        }
    }
}

球体(player)的控制脚本。注意:对刚体的运动控制最好写在Fix update()这个方法里面,这样运行游戏时帧数才会稳定,如果写在update()里面,每一帧的更新时间取决于电脑硬件的运行速度,这就会出现卡顿的现象。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ROTATION : MonoBehaviour {
// Use this for initialization
    public float RotSpeed;
 void Start () {
  
 }
 // Update is called once per frame
 void Update () {
        transform.RotateAround(transform.position, Vector3.up, RotSpeed * Time.deltaTime);
 }
}

这是小cube的旋转动画。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraControll : MonoBehaviour {
    public GameObject player;
    private Vector3 offset;
    // Use this for initialization
 void Start () {
        offset = transform.position - player.transform.position;
 }
 // Update is called once per frame
 void Update () {
        transform.position = player.transform.position + offset;
 }
}

相机跟随代码。

初次写博客,写的很烂,虚心接受批评!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值