键盘控制小球运动吃掉食物并返回得分,判断是否胜利
- 一些杂谈
SIKI学院零基础Unity教学入门视频
利用放假的时间在家中看完了SIKI学院的Unity入门视频,只能说确实非常适合零基础入门教程,但是对于有一定语言基础的人来说整体视频的节奏还是相对慢了一些。建议二倍速加快进解决问题。
总的来说Unity上手不算难,相比正在自学的计组有趣的多(挠头)。虽然没学过C#,但是和java还是有一定的共同之处。大体意思都可以理解,如果遇到什么bug通通百度就可以解决。
希望我自己少摸点鱼。
- 对于选集的一些看法
P1-P5 一些对于Unity的介绍和相关职业方面的扩展和发散,可以听一听,但是我是直接跳过的。
P6-P8 关于Unity的下载安装方面的讲解,事实上我觉得直接网上查一下行,没必要老老实实看视频。(太水了)
P9-P16 对于Unity的一些基本工具的讲解,包括场景操作、视图、预制体、材质、基本模型、刚体组件等。
P17-P38 开始做小球吃食物的游戏。(终于)
- 制作游戏的一些记录
使用了五种材质,事实上只用到了四种。
预制物体food,事实上我这里好像出了一些问题,修改这个food无法级联修改到产生的food(1)...food(10)。但是对我的游戏没有太大影响。(手动修改了哈哈)
本游戏共使用的物体如上。
要注意的地方是游戏胜利时的文本输出框这里是不勾选的。通过代码控制输出。
小球添加刚体组件,相关设置保持不变就行了。
文本框ScoreText和WinText控制游戏的显示得分和胜利提示。
类Ball代码如下:
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Diagnostics;
//using System.Diagnostics.Debug;
using UnityEngine;
using UnityEngine.UI;
public class Ball : MonoBehaviour
{
public Rigidbody rd;
public int score = 0;//通过score判断游戏是否胜利
public Text scoreText;//得分提示框
public GameObject winText;//胜利输出框
void Start()
{
}
void Update()
{
float h = Input.GetAxis("Horizontal");//AD键
float v = Input.GetAxis("Vertical");//WS键
//Debug.Log(h);
rd.AddForce(new Vector3(h,0,v));
//控制小球的速度用Vector3(h,0,v)*x (x为设置的速度值)
//三维向量(x,y,z)
//常用向量 Vector3.right Vector3.left Vector3.forward Vector3.back Vector3.up Vector3.down
}
//碰撞代码
//private void OnCollisionEnter(Collision collision)
//{
// //获取游戏物体标签
// if (collision.gameObject.tag == "Food")
// {
// Destroy(collision.gameObject);//销毁碰撞到的这个物体
// }
//}
private void OnTriggerEnter(Collider other)
{
//触发器 一般进行触发检测 可以穿过
if (other.tag == "Food")
{
Destroy(other.gameObject);//销毁碰撞到的这个物体
score++;
scoreText.text = "您的蚌埠指数为:"+score;//自行忽略整活
if(score==11)
{
winText.SetActive(true);//激活WinText输出游戏胜利提示
}
}
}
}
摄像机跟随小球移动,使小球始终处于摄像机视角中。
类FollowTarget显示如下:
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Security.Cryptography;
using UnityEngine;
public class FollowTarget : MonoBehaviour
{
public Transform playerTransform;
private Vector3 offset;
// Start is called before the first frame update
void Start()
{
//小球和摄像机之前保持一个偏移位置
offset = transform.position - playerTransform.position;
//主相机位置-小球位置
}
// Update is called once per frame
void Update()
{
transform.position = playerTransform.position + offset;
}
}
食物保持旋转状态
如下:
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using UnityEngine;
public class Food : MonoBehaviour
{
void Start()
{
}
void Update()
{
transform.Rotate(Vector3.up);
//一度一度变换角度 一秒六十度
}
}
- 游戏效果展示
哈哈,蚌埠指数。
蚌埠住啦!