使用unity自制“跳一跳”
主要代码如下: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();
}
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插件包:如果看不懂的额可以下载来看看哦
{:10_256:}{:10_256:} 看不懂
页:
[1]