Unity 跑酷游戏全部脚本(完结)

脚本1 触发器脚本

这个脚本是主角身上的脚本,用于检测是否碰到其他触发器,并做出对应的行为

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class ColliidisonTrigger : MonoBehaviour

{

//触发检测 1.碰到金币克隆区,克隆金币 2.恐克隆怪物 3.碰撞金币 吃掉它 加分 4.碰到怪物,掉血 5碰到加速带加速、减速

//该触发检测脚本挂到 主角身上

//PlayerCont onePlayer = new PlayerCont();

GameObject BeiPengObj;

public GameObject MosterMuban;

public GameObject CloneStruFather;

public GameObject JInbiMUban;

public GameObject JinbiFather;

private void OnTriggerEnter(Collider other)

{

BeiPengObj = other.transform.gameObject;

//如果碰到触发器,执行一次

Debug.Log("碰到了别人");

if (BeiPengObj.tag == "MonsterTrigger")//碰到了怪物克隆区触发器

{

CloneMonster();

}

if (BeiPengObj.tag == "rCoinTrigger")//碰到了金币克隆区触发器

{

Debug.Log("kelongjinbi");

CloneCoin();

}

if (BeiPengObj.tag == "TriggerSpeedUp")//碰到了加速区触发器

{

Debug.Log("开始加速");

Speedup();

}

if (BeiPengObj.tag == "Coin")//碰到了金币触发器

{

Debug.Log("吃掉,消失金币,加分");

Destroy(BeiPengObj);

addScore();

}

if (BeiPengObj.tag == "Monster")//碰到了怪物障碍物

{

Debug.Log("掉血");

ScoreManager.SubBlood(); //跨类访问并执行分数类里面的掉血函数

}

}

void CloneMonster()

{

for (int i = 0; i < 10; i++)

{

Vector3 ONETEMPPOS = new Vector3(156, 0, BeiPengObj.transform.position.z + 50f+i*3);

Debug.Log("克隆怪物去");

GameObject.Instantiate(MosterMuban, ONETEMPPOS, Quaternion.Euler(0, 0, 0), CloneStruFather.transform);

}

}

void CloneCoin()

{

for (int i = 0; i < 10; i++)

{

Vector3 ONETEMPPOS = new Vector3(156, 0, BeiPengObj.transform.position.z + 50f + i * 3);

Debug.Log("克隆怪物去");

GameObject.Instantiate(JInbiMUban, ONETEMPPOS, Quaternion.Euler(0, 0, 0), JinbiFather.transform);

}

}

void Speedup()

{

PlayerCont.RunSpeed = 20f;

}

void addScore()

{

ScoreManager.ScoreAdd();//跨类访问并执行分数类里面的加分函数

}

}//end class

脚本2 分数管理脚本

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class ScoreManager : MonoBehaviour

{

//分数管理 血量管理

// 如果撞击到金币就加分,如果撞击到障碍物就掉血

public static int CurrentScore=0;

public static int CurrentBlood = 10000;

public static void ScoreAdd()

{

Debug.Log("加分函数开始执行");

CurrentScore += 10;

Debug.Log("分:"+CurrentScore);

}

public static void SubBlood()

{

Debug.Log("掉血函数开始执行");

CurrentBlood -= 100;

Debug.Log("血:" + CurrentBlood);

}

private void OnGUI()

{

Rect oneLableRec = new Rect(100, 100, 50, 50);

GUILayout.Box(CurrentBlood.ToString(), GUILayout.Width(200), GUILayout.Height(50), GUILayout.ExpandWidth(false));

// 创建另一个矩形框,背景色为红色,边框宽度为3像素

GUILayout.Box(CurrentScore.ToString(), GUILayout.Width(200), GUILayout.Height(70), GUILayout.ExpandWidth(false));

GUILayout.TextField("", GUILayout.Width(200), GUILayout.Height(50), GUILayout.ExpandWidth(false));

}

}

脚本3 空物体移动的脚本

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class PlayerCont : MonoBehaviour

{

//Horizontal

//1.控制玩家移动,input.getaix

//2.A、D控制向左、右移动

//3.W控制跳跃

public GameObject Player;

public float LRSPEED = 10F;

public float JUMPSPEED = 5;

public static float RunSpeed;

private void Start()

{

RunSpeed = 10f;

}

private void Update()

{

UserInput();

}

//*=========================

public void UserInput()

{

//Debug.Log("检测用户按下的键盘A D W");

float MoveZuoY = Input.GetAxis("Horizontal");

ControlMove(MoveZuoY);

if (Input.GetKey(KeyCode.W))

{

Jump();

}

}

void ControlMove(float ZuoyouMove)

{

Player.transform.Translate(new Vector3(ZuoyouMove * LRSPEED * Time.deltaTime, 0, 0));

}

void Jump()

{

Player.transform.Translate(new Vector3(0, JUMPSPEED * Time.deltaTime, 0));

//Debug.Log("角色开始移动了");

}

private void FixedUpdate()

{

AwalysRun();

}

void AwalysRun()

{

Player.transform.Translate(new Vector3(0, 0, 1 * RunSpeed * Time.deltaTime));

}

}

相关推荐
王者鳜錸2 小时前
PYTHON让繁琐的工作自动化-猜数字游戏
python·游戏·自动化
萘柰奈5 小时前
Unity进阶--C#补充知识点--【Unity跨平台的原理】Mono与IL2CPP
unity·c#·游戏引擎
淡海水6 小时前
【原理】Unity GC 对比 C# GC
unity·c#·gc·垃圾回收
阿赵3D8 小时前
Unity引擎播放HLS自适应码率流媒体视频
unity·游戏引擎·音视频·流媒体·hls
NRatel11 小时前
Unity 游戏提升 Android TargetVersion 相关记录
android·游戏·unity·提升版本
郝学胜-神的一滴12 小时前
Three.js 材质系统深度解析
javascript·3d·游戏引擎·webgl·材质
SmalBox13 小时前
【渲染流水线】[光栅阶段]-[片元着色]以UnityURP为例
unity·渲染
人工干智能16 小时前
pygame的帧处理中,涉及键盘的有`pg.event.get()`与`pg.key.get_pressed()` ,二者有什么区别与联系?
python·游戏·计算机外设·pygame
EanoJiang1 天前
类蜘蛛侠+刺客信条暗杀动作系统开发日志
游戏
★YUI★1 天前
学习游戏制作记录(玩家掉落系统,删除物品功能和独特物品)8.17
java·学习·游戏·unity·c#