本人录制的视频教程,使用unity3d 4.6版本,讲解了一个赛车游戏的开发,相关的的源码在这里。 主要偏重代码部分,个人提炼的干货,没有冗余的基本操作,而且视频还很清晰,希望能帮助到大家。
为了方便大家下载,上传到了百度网盘,这里
为了方便大家预览,上传到了优酷, 这里
部分源码摘录:
using UnityEngine;
using System.Collections;
public class CameraFollowScript : MonoBehaviour {
public GameObject car;
public float distance = 5;
public float heightDiff = 3;
public float angleDamping = 1.5f; // 缓冲系数
public float heightDamping = 1f;
public float defaultFOV = 60;
public float zoomRatio = 1.2f;
private float dstAngleWithDirection = 0;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
float myH = transform.position.y;
float dstH = car.transform.position.y + heightDiff;
float retH = Mathf.Lerp(myH, dstH, heightDamping * Time.deltaTime);
float myAngle = transform.eulerAngles.y;
float dstAngle = dstAngleWithDirection;
float retAngle = Mathf.LerpAngle(myAngle, dstAngle, angleDamping * Time.deltaTime);
Quaternion retRotation = Quaternion.Euler(0, retAngle, 0);
transform.position = car.transform.position;
transform.position -= (retRotation * Vector3.forward * distance);
Vector3 temp = transform.position;
temp.y = retH;
transform.position = temp;
transform.LookAt(car.transform);
}
void FixedUpdate()
{
Vector3 v = car.rigidbody.velocity;
//Vector3 faceDirection = car.transform.forward;
//float dot = Vector3.Dot(v, faceDirection); // 点积
Vector3 carLocalV = car.transform.InverseTransformDirection(v);
float dstAnleY = car.transform.eulerAngles.y;
if ( carLocalV.z < -0.01f )
dstAngleWithDirection = dstAnleY + 180;
else
dstAngleWithDirection = dstAnleY;
float speed = v.magnitude;
camera.fieldOfView = defaultFOV + speed * zoomRatio;
}
}
百度网盘,这里,视频截屏:
优酷, 这里,视频截图:
具体的章节
- 飞车游戏之1建模
- 飞车游戏之2车轮建模
- 飞车游戏之3美化场景
- 飞车游戏之4车子动起来
- 飞车游戏之5摄像头跟随
- 飞车游戏之6摄像头缩放
- 飞车游戏之7车轮转动
- 飞车游戏之8前轮可以转向
- 飞车游戏之9控制转向系数
- 飞车游戏之10限速
- 飞车游戏之11车震
- 飞车游戏之12车轮漂移
飞车游戏之13音效sfx
- 飞车游戏之14飘逸的车痕
转载注明出处:http://blog.csdn.net/s_xing/article/details/44646069
http://blog.csdn.net/s_xing/article/details/44546309
希望帮助到大家,希望大家提一些意见,,谢谢。