写在前面:项目的关卡功能和数据库基础实现是小组其他成员实现的部分,这里作为学习总结。关卡功能块使用C#语言编写脚本,在Unity3D游戏引擎的环境中实现,数据库功能块使用PHP作为服务端获取MySQL中的数据。
按键决定碰撞盒的触发 | 碰撞消除物体增减值 |
按钮实现的场景切换 |
一、碰撞盒 |
if (按下J键) {
背景图片切换到changeSprite01
} {
星星的碰撞盒被触发tempCo.isTrigger = true,鸟和鸭子的碰撞盒不被触发
} else if (按下K键) {
背景图片切换到changeSprite02
} {
鸟的碰撞盒被触发,星星和鸭子的碰撞盒不被触发
} else if (按下L键) {
背景图片切换到changeSprite03
} {
鸭子的碰撞盒被触发,鸟和星星的碰撞盒不被触发
}
- //关键代码片段 star.cs
- using UnityEngine;
- using System.Collections;
- public class star : MonoBehaviour {
- private Collider[] starColliders;
- void Start () {
- starColliders = GetComponents<Collider>();
- }
- void Update () {
- if (Input.GetKeyDown(KeyCode.K))
- {
- foreach (Collider tempCo in starColliders)
- {
- tempCo.isTrigger = true;
- }
- }
- else if (Input.GetKeyDown(KeyCode.J))
- {
- foreach (Collider tempCo in starColliders)
- {
- tempCo.isTrigger = false;
- }
- }
- }
- }
二、增减值 |
if (碰到的物体tag为animal) {
销毁animal物体,生命值+1和杀戮值+1
} else if (碰到的物体tag为Dead) {
生命值-1
if (生命值= 0) {
跳转到dead场景 销毁人物
}
} if (杀戮值=0) {
跳转到好结局;
} else if (杀戮值=1或者杀戮值=2) {
跳转到正常结局 ;
} else if (杀戮值= 3) {
跳转到坏结局;
}
- //关键代码片段 kills.cs → OnCollisionEnter
- private void OnCollisionEnter(Collision mCollider)
- {
- //如果碰到的是动物,则动物消失,数目加1;
- if (mCollider.gameObject.tag == "animal")
- {
- Destroy(mCollider.gameObject);
- //Add one to the current value of our count variable.
- count = count + 1;
- count01 = count01 + 1;
- //Update the currently displayed count by calling the SetCountText function.
- SetCountText();
- }
- else if (mCollider.gameObject.tag == "Dead")
- {
- count01 = count01 - 1;
- SetCountText();
- if (count01 == 0)
- {
- Application.LoadLevel("dead");
- Destroy(gameObject);
- }
- }
- else if (mCollider.gameObject.tag == "tree")
- {
- Destroy(gameObject);
- if (count == 0)
- {
- Application.LoadLevel("gd");
- }
- else if (count == 1 || count==2)
- {
- Application.LoadLevel("ne");
- }
- else if (count == 3)
- {
- Application.LoadLevel("be");
- }
- }
- }
- void SetCountText()
- {
- countText.text = "杀戮值: " + count.ToString();
- countText01.text = "生命值: " + count01.ToString();
- }
- public void CreateScores(string id,int count,int count01){
- WWWForm form = new WWWForm ();
- form.AddField ("idPost", id);
- form.AddField ("scorePost", count);
- form.AddField ("lifePost", count01);
- WWW www = new WWW (CreateScoresURL,form);
- }
- void Awake()
- {
- DontDestroyOnLoad(transform.gameObject);
- }
- }
三、场景 |
public void点击按钮{
Application.LoadLevel(切换到另一场景);
}
Private void OnCollisionEnter(Collision collision) {
if(碰到了tag为Player的物体) {
Application.LoadLevel(“vi切换到另一场景");
}
}
- //关键代码片段 OnCollisionEnter
- private void OnCollisionEnter(Collision collision)
- {
- if (collision.gameObject.tag == "Player")
- {
- Debug.Log("dead");
- changeSpriteRenderer.sprite = changeSprite;
- Destroy(gameObject, lifeTime);
- }
- }
四、Unity连接数据库 |
- //关键代码片段 InsertUser.php
- <?php
- $servername ="localhost";
- $server_username ="root";
- $server_password = "";
- $dbName = "game";
- $id = $_POST["idPost"];
- $password = $_POST["passwordPost"];
- //$score = $_POST["scorePost"];
- //$life = $_POST["lifePost"];
- //$schedule = $_POST["schedulePost"];
- $conn = new mysqli($servername,$server_username,$server_password,$dbName);
- if(!$conn){
- die("Connection Failed." . mysqli_connect_error());
- }
- $sql = "INSERT INTO gamer (id , password)
- VALUES('".$id."', '".$password."')";
- $result = mysqli_query($conn,$sql);
- if(!result) echo "there was an error";
- else echo"Everything ok.";
- ?>
五、获取Unity中的信息 |
- //关键代码片段 dl.cs → CreateUser
- public void CreateUser(string id, string password) {
- WWWForm form = new WWWForm();
- form.AddField("idPost", id);
- form.AddField("passwordPost", password);
- WWW www = new WWW(CreateUserURL, form);
- }
来源: http://www.cnblogs.com/ljq66/p/7777223.html