unity打靶设计代码
时间: 2023-12-08 13:05:32 浏览: 72
以下是一个简单的Unity打靶游戏的设计代码示例,包括靶、武器、子弹、得分等要素:
```csharp
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class ShootingGame : MonoBehaviour {
public GameObject targetPrefab; // 靶的预制体
public Transform targetSpawnPoint; // 靶的生成点
public GameObject weapon; // 武器模型
public GameObject bulletPrefab; // 子弹预制体
public Transform bulletSpawnPoint; // 子弹发射点
public float bulletSpeed = 10f; // 子弹速度
public Text scoreText; // 显示分数的文本框
public int scorePerHit = 10; // 每次击中靶的得分
private int score = 0; // 当前得分
private bool gameStarted = false; // 游戏是否已经开始
void Start () {
SpawnTarget (); // 生成第一个靶
}
void Update () {
if (Input.GetMouseButtonDown (0) && gameStarted) { // 鼠标左键按下,且游戏开始
Shoot (); // 射击
}
}
void SpawnTarget () {
GameObject newTarget = Instantiate (targetPrefab, targetSpawnPoint.position, Quaternion.identity) as GameObject; // 生成新的靶
newTarget.GetComponent<Target> ().shootingGame = this; // 给靶设置ShootingGame脚本的引用
}
void Shoot () {
GameObject newBullet = Instantiate (bulletPrefab, bulletSpawnPoint.position, bulletSpawnPoint.rotation) as GameObject; // 生成新的子弹
Rigidbody rb = newBullet.GetComponent<Rigidbody> ();
rb.velocity = weapon.transform.forward * bulletSpeed; // 给子弹添加速度
Destroy (newBullet, 3f); // 3秒后自动销毁子弹
}
public void HitTarget () {
score += scorePerHit; // 得分增加
scoreText.text = "Score: " + score.ToString (); // 更新分数文本框的显示
SpawnTarget (); // 生成新的靶
}
public void StartGame () {
gameStarted = true; // 标记游戏已经开始
}
}
```
其中,`Target`脚本是靶的控制脚本,用于检测是否被击中:
```csharp
using UnityEngine;
public class Target : MonoBehaviour {
public ShootingGame shootingGame; // ShootingGame脚本的引用
void OnCollisionEnter (Collision col) {
if (col.gameObject.tag == "Bullet") { // 如果被子弹击中
Destroy (gameObject); // 销毁靶
shootingGame.HitTarget (); // 通知ShootingGame脚本得分增加
}
}
}
```
以上代码只是一个简单的示例,你可以根据自己的需求和技能对代码进行更复杂的设计和开发。
阅读全文