提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文
前言
制作小球酷跑
提示:以下是本篇文章正文内容,下面案例可供参考
一、制作实验场景
设计背景颜色:
二、创建代码
1.摄像机代码
代码如下(示例):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class cameraControl : MonoBehaviour {
public GameObject player;
private float offset_camera;
void Start () {
offset_camera = gameObject.transform.position.x - player.transform.position.x;
}
// Update is called once per frame
void Update () {
FollowCameraMove();
}
void FollowCameraMove()
{
gameObject.transform.position = new Vector3(offset_camera + player.transform.position.x, gameObject.transform.position.y,gameObject.transform.position.z);
}
}
2.小球代码
小球设置刚体并应用代码
代码如下(示例):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class playMove : MonoBehaviour {
public Rigidbody rd;
public float speedAutoMove = 5;
public float speedMoveUpandDown = 20;
void Start () {
rd = gameObject.GetComponent<Rigidbody>();
}
void Update () {
PlayerAutoMove();
PlayerMoveUpandDown();
}
private void PlayerAutoMove()
{
rd.AddForce(Vector3.right*speedAutoMove);//前进
}
private void PlayerMoveUpandDown()
{
float v = Input.GetAxis("Vertical");//上下运动
rd.AddForce(v*Vector3.up*speedMoveUpandDown);//给一个上下的力量
}
}
##3.设置障碍物自动生成代码
先设置预制体
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BarrierControl : MonoBehaviour {
public GameObject player;
public GameObject BarrierPre;
public GameObject CurrentBarrier;
public int BarrierInterval = 10;
void Start () {
}
void Update () {
AutCreatBarrier();
}
public void AutCreatBarrier()
{
if(player.transform.position.x>CurrentBarrier.transform.position.x)
{
//生成新的障碍物
float targetX = CurrentBarrier.transform.position.x+BarrierInterval;
float targetY = RandomBarrierPositionY();
Vector3 targetPos = new Vector3(targetX,targetY,0);
GameObject g = Instantiate(BarrierPre,targetPos,Quaternion.identity);
g.transform.localScale = new Vector3(g.transform.localScale.x, RandomBarrierSizeY((int)g.transform.position.y),g.transform.localScale.z);
CurrentBarrier = g;
}
}
public float RandomBarrierSizeY(int y)
{
int yAbs = Mathf.Abs(y);
if(yAbs==0)
{
return 6;
}
else
{
return (3 - yAbs) * 2 - 1;
}
}
public float RandomBarrierPositionY()
{
int r = Random.Range(-3,3);
return r;
}
}
三.效果图
总结
以上就是今天要讲的内容,本文仅仅简单介绍了unity的小球酷跑的制作。