鱼C论坛

 找回密码
 立即注册
查看: 2665|回复: 2

[原创] 使用unity自制“跳一跳”

[复制链接]
发表于 2018-1-9 22:21:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
主要代码如下:
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插件包:如果看不懂的额可以下载来看看哦

JumpJump.zip (861.28 KB, 下载次数: 37)

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-9 22:47:55 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-11 02:03:22 | 显示全部楼层
看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 16:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表