You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
pun4lcfq3/Code/NewBehaviourScript.cs

197 lines
6.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class NewBehaviourScript : MonoBehaviour
{
// 摄像机位置
public Transform cameraTransform;
// 摄像机距离人物的距离
public float cameraDistance;
// 游戏管理器
public GameManager gameManager;
// 前进移动速度
float moveVSpeed;
// 水平移动速度
public float moveHSpeed = 5.0f;
// 跳跃高度
public float jumpHeight = 5.0f;
// 动画播放器
Animator m_animator;
// 起跳时间
double m_jumpBeginTime;
// 跳跃标志
int m_jumpState = 0;
bool attack=false;
// 最大速度
public float maxVSpeed = 8.0f;
// 最小速度
public float minVSpeed = 5.0f;
public Score playerScore;
public float goalScore = 100000;
int uperCount = 0;
// Use this for initialization
void Start()
{
//print(11);
Time.timeScale = 1;
GetComponent<Rigidbody>().freezeRotation = true;
m_animator = GetComponent<Animator>();
if (m_animator == null)
print("null");
moveVSpeed = minVSpeed;
Debug.Log("start!!!");
gameManager.isEnd = false;
}
// Update is called once per frame
void Update()
{
// 游戏结束
if (gameManager.isEnd)
{
return;
}
if ((playerScore.distance + playerScore.bonus) >= goalScore) Application.LoadLevel(2);
if (attack) uperCount++;
if (uperCount >= 225) { Debug.Log("犯规了噢!"); gameManager.isEnd = true; }
AnimatorStateInfo stateInfo = m_animator.GetCurrentAnimatorStateInfo(0);
/*if (stateInfo.fullPathHash == Animator.StringToHash("Base Layer.run"))
{
m_jumpState = 0;
if (Input.GetButton("Jump"))
{
// 起跳
m_animator.SetBool("Jump", true);
//m_jumpBeginTime = m_animator.GetTime();
}
else
{
// 到地面
}
}
else
{
//double nowTime = m_animator.GetTime();
//double deltaTime = nowTime - m_jumpBeginTime;
// 掉下
m_jumpState = 1;
m_animator.SetBool("Jump", false);
}*/
float h = Input.GetAxis("Horizontal");
Vector3 vSpeed = new Vector3(this.transform.forward.x, this.transform.forward.y, this.transform.forward.z) * moveVSpeed;
Vector3 hSpeed = new Vector3(this.transform.right.x, this.transform.right.y, this.transform.right.z) * moveHSpeed * h;
Vector3 jumpSpeed = new Vector3(this.transform.up.x, this.transform.up.y, this.transform.up.z) * jumpHeight * m_jumpState;
Vector3 vCameraSpeed = new Vector3(this.transform.forward.x, this.transform.forward.y, this.transform.forward.z) * minVSpeed;
this.transform.position += (vSpeed + hSpeed + jumpSpeed) * Time.deltaTime;
cameraTransform.position += (vCameraSpeed) * Time.deltaTime;/*
// 当人物与摄像机距离小于cameraDistance时 让其加速
if (this.transform.position.x - cameraTransform.position.x < cameraDistance)
{
moveVSpeed += 0.1f;
if (moveVSpeed > maxVSpeed)
{
moveVSpeed = maxVSpeed;
}
}*/
// 超过时 让摄像机赶上
/*else*/ if (this.transform.position.x - cameraTransform.position.x > cameraDistance)
{
//moveVSpeed = minVSpeed;
cameraTransform.position = new Vector3(this.transform.position.x - cameraDistance, cameraTransform.position.y, cameraTransform.position.z);
}
// 摄像机超过人物或者掉落
/*if ((cameraTransform.position.x - this.transform.position.x > 0.0001f)|| (this.transform.position.y< 0f))
{
Debug.Log("camera!!!你输啦!!!!!!!!!!");
gameManager.isEnd = true;
}*/
if (Input.GetKeyDown(KeyCode.DownArrow)) attack = true;
if (Input.GetKeyUp(KeyCode.DownArrow)) { attack = false; Debug.Log("发送keyup");uperCount = 0; }
//cameraTransform.position = new Vector3(this.transform.position.x - cameraDistance, cameraTransform.position.y, cameraTransform.position.z);
}
void OnGUI()
{
if (gameManager.isEnd)
{
GUIStyle style = new GUIStyle();
style.alignment = TextAnchor.MiddleCenter;
style.fontSize = 40;
style.normal.textColor = Color.white;
GUI.Label(new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100), "你输了~", style);
Time.timeScale = 0;
if (GUI.Button(new Rect(Screen.width / 2 - 100, Screen.height / 2 - 200, 150, 75), "Restart"))
{
//attack = false;
//Debug.Log("按了重来");
Application.LoadLevel(1);
}
if (GUI.Button(new Rect(Screen.width / 2 - 100, Screen.height / 2 - 100, 150, 75), "Quit"))
{
Application.LoadLevel(0);
}
}
}
void OnTriggerEnter(Collider other)
{
// 如果是抵达点
if (other.name.Equals("ArrivePos"))
{
gameManager.changeRoad(other.transform);
}
// 如果是透明墙
else if (other.tag.Equals("AlphaWall"))
{
;
}
// 如果是障碍物
else if ( attack && other.tag.Equals("Obstacle"))
{
Debug.Log("按了攻击");
attack = false;
GameObject.Destroy(other.gameObject);
}
else if (other.tag.Equals("Obstacle"))
{
gameManager.isEnd = true;
//SceneManager.LoadScene(0);
Time.timeScale = 0;
Debug.Log("你输了~");
}
else if (other.tag.Equals("Tool"))//是prop层的节点撞的我
{
Tool p = other.GetComponent<Tool>();//获得撞我的节点的prop组件
switch (p.Tool_type)//判断道具类型
{
case 1:
Debug.Log("你捡到了金币分数加1000");//不同的道具做不同的处理
playerScore.bonus += 10000;
break;
case 2:
Debug.Log("加速道具,速度提升。");
moveVSpeed += 1f;
print(moveVSpeed);
break;
}
}
}
}