看到傅园慧女神的洪荒之力,心中也充满了洪荒之力,顺势做一个测手速的小游戏,虽然做的有点渣。谁让我既不会美术又不会动画,图还得自己做、动画还得自己截,差点折腾死我。
下面展示(轻吐槽,我知道做得难看):
再说一下:资源、图、动画啥的就不要太认真了,我费了九牛二虎之力也只这个水平了。(PS:大部分时间就和这些杠上了,没美工真可怕)
首先,第一个scene一张图说明下一下:
这个scene的脚本我都不想贴,就这两东西
[C#]
纯文本查看
复制代码
1
2
3
4
5
6
7
|
public
void
IStart()
{
SceneManager.LoadScene(
"Scene1"
);
}
public
void
IExit()
{
Application.Quit();
}
|
第二个scene也先来一张图,清晰明了:
这部分使用了两块代码,分别是相机平滑跟随player的followTarget.cs和Move.cs。
其中的第二个脚本虽然用最通俗的if来写的,但是包含了移动的加速减速、动画的播放停止、秒计时器、数据存储等诸多方面,列出来看看吧。
[C#]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
using
UnityEngine;
using
System.Collections;
public
class
followTarget : MonoBehaviour {
public
float
smoothing = 3;
private
Transform player;
// Use this for initialization
void
Start()
{
//player = GameObject.FindGameObjectWithTag(Tags.player).transform;
player = GameObject.Find(
"swimmer"
).transform;
}
// Update is called once per frame
void
FixedUpdate()
{
Vector3 targetPos = player.position +
new
Vector3(0, 0, -6);
transform.position = Vector3.Lerp(transform.position, targetPos, smoothing * Time.deltaTime);
}
}
|
[C#]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
using
UnityEngine;
using
System.Collections;
using
UnityEngine.UI;
using
UnityEngine.SceneManagement;
public
class
Move : MonoBehaviour {
public
float
speed = 1;
float
speed1 = 0;
float
i = 0;
int
m = 0;
//时间
int
n = 0;
//点击次数
Vector2 ToPos =
new
Vector2(1,1);
GameObject player;
Text indexClick;
Text indexTime;
bool
ifSave =
true
;
//动画组件
private
Animator mAnim;
// Use this for initialization
void
Start () {
player = GameObject.Find(
"swimmer"
);
indexClick = GameObject.Find(
"Canvas"
).transform.Find(
"clickText"
).GetComponent<Text>();
indexTime = GameObject.Find(
"Canvas"
).transform.Find(
"timeText"
).GetComponent<Text>();
mAnim = GetComponent<Animator>();
mAnim.SetBool(
"idle"
,
true
);
mAnim.SetBool(
"swim"
,
false
);
}
// Update is called once per frame
void
Update () {
if
(Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.X))
{
speed1 += 0.9f;
n++;
indexClick.text =
"点 击 次 数:"
+ n.ToString();
mAnim.SetBool(
"swim"
,
true
);
mAnim.SetBool(
"restart"
,
true
);
}
else
if
(speed1 > 0)
{
speed1 -= 0.09f;
mAnim.SetBool(
"swim"
,
false
);
mAnim.SetBool(
"restart"
,
false
);
}
else
{
speed1 = 0;
mAnim.SetBool(
"stop"
,
true
);
}
GetComponent<Rigidbody2D>().MovePosition(transform.position +
new
Vector3(1, 0, 1) * speed1 * Time.deltaTime);
//秒计时器
if
(i >= 1.0f)
{
i = 0;
m++;
indexTime.text =
"用时(秒):"
+ m.ToString();
//print(m);
}
i += Time.deltaTime;
//数据存储
if
(player.transform.position.x > 8.4f && ifSave ==
true
)
{
PlayerPrefs.SetInt(
"indexClick"
, n);
PlayerPrefs.SetInt(
"indexTime"
, m);
ifSave =
false
;
SceneManager.LoadScene(
"Scene2"
);
}
}
}
|
第三部分就更简单了,取一下第二个scene存的数据,然后显示出来就行了。本来想加个排行榜,然后想了下,这个再说吧,先不浪费时间了。
如图:
代码也很简洁:
[C#]
纯文本查看
复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
using
UnityEngine;
using
System.Collections;
using
UnityEngine.UI;
using
UnityEngine.SceneManagement;
public
class
showFinal : MonoBehaviour {
int
indexTime;
int
indexClick;
Text ClickText;
Text TimeText;
// Use this for initialization
void
Start () {
indexClick = PlayerPrefs.GetInt(
"indexClick"
);
indexTime = PlayerPrefs.GetInt(
"indexTime"
);
ClickText = GameObject.Find(
"Canvas"
).transform.Find(
"clickText"
).GetComponent<Text>();
TimeText = GameObject.Find(
"Canvas"
).transform.Find(
"timeText"
).GetComponent<Text>();
ClickText.text =
"点 击 次 数:"
+ indexClick.ToString();
TimeText.text =
"用时(秒):"
+ indexTime.ToString();
}
// Update is called once per frame
void
Update () {
}
public
void
Restart()
{
SceneManager.LoadScene(
"Scene1"
);
}
public
void
Exit()
{
Application.Quit();
}
}
|
可以发布成安卓的,也可以发布成pc的,pc的按X键或者鼠标加速,小伙伴们,爆发你的洪荒之力吧(傅女神借我点洪荒之力呗)。