欢迎光临散文网 会员登陆 & 注册

使用unity制作“跳一跳”小游戏

2018-01-09 22:21 作者:程序员小明哥  | 我要投稿

主要代码如下:


using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.SceneManagement;

using UnityEngine.UI;


public class TabJump : MonoBehaviour {



    public GameObject cubes;//方块预制体


    public float Force = 500;//力度


    public float DropForce;//按压力


    private Rigidbody rigidbody;//刚体组件


    private Animation animation;//动画组件


    private int score;


    public Text scoretxt;


    public AudioClip jump;

    public AudioClip down;


    private AudioSource ad;



    //private Camera can;


    void Start()

    {

        rigidbody = GetComponent<Rigidbody>();

        animation = GetComponent<Animation>();

        ad=GetComponent<AudioSource>();

        //can = GameObject.Find("Main Camera").gameObject.GetComponent<Camera>();

        scoretxt.text = score.ToString();

    }


    [Header("X轴的偏移量")]

    public float _x = -0.5f;


    private Vector3 nextPos;//下一个生成物体的位置

    private void Update()

    {

        Jump(nextPos);        

    }

    //void OnCollisionEnter(Collision collision)

    void OnCollisionEnter(Collision col)

    {

       if(col.transform.tag=="plane")//如果碰到了plane,重新加载场景

       {

           SceneManager.LoadScene("001");

       }


        if(col.transform.tag=="box")//如果碰到了一个标签为box的并且可以克隆

        {

            creatbox(col.transform.position);//克隆一个方块

            ad.PlayOneShot(down);

            nextPos = col.transform.position+pos;//将碰到的物体的位置赋值给nextPos

            if (canaddscore)

            {

                score += 1;

            }

            scoretxt.text = score.ToString();

        }        

    }

    

    void UpdateCamera()//跳完相机移动

    {

        Camera.main.transform.localPosition =  new Vector3(0, 0, 2f);

    }

    Vector3 pos = new Vector3(0, 0, 2);//Z轴偏移量为2


    GameObject newcube;//声明一个游戏物体变量

    private bool CanCopy=false;//是否可以克隆

    bool canaddscore;

    void Jump(Vector3 pos)

    {


        Vector3 Dir = (pos - transform.position).normalized;//跳的方向(向量的减法运算)

        

        if (Input.GetMouseButton(0))//鼠标按下

        {

            animation.Play("reset");

            DropForce += 0.05f;//按压力+=0.05

            if (DropForce >= 7.0f)//如果大于等于5

            {

                DropForce = 7.0f;//就等于5

            }


            if(DropForce>=2.0f)

            {

                canaddscore = true;

            }

        }


        if (Input.GetMouseButtonUp(0))//鼠标抬起

        {

            CanCopy=true;//将能否克隆开关改为true

            ad.PlayOneShot(jump);

            rigidbody.AddForce(Vector3.up* Force * DropForce/2);//添加一个向上的力

            rigidbody.AddForce(Dir * Force * DropForce/2);//添加一个向下一个物体跳向的力

            animation.Play("jump");//播放翻转动画

            DropForce = 0;//按压力重置为0

        }

    }


    /// <summary>

    /// 克隆一个方块

    /// </summary>

    /// <param name="trans">位置</param>

    void creatbox(Vector3 trans)

    {

        newcube = Instantiate(cubes, trans + pos, Quaternion.identity) as GameObject;

        newcube.name = "box";

    }

}

将此脚本挂载到玩家身上即可。注意要设置一些东西。如物体的标签,玩家的刚体等,相信unity开发者应该很熟悉了。我已经将工程打包成了unity插件包。由于网盘没有会员了,上传不了了。如果看不懂的额可以私信我,或加入QQ群:680645296,我发给大家。下面是制作出来的样图效果:



使用unity制作“跳一跳”小游戏的评论 (共 条)

分享到微博请遵守国家法律