1、新建unity3d项目,在项目中导入CharacterController包。在游戏中创建Plane作为地面,把Plane的Tag设为Ground。创建Directional light照亮游戏世界。把第三人称控制器放到Plane上面,之后把挂载第三人称的脚本Remove掉,把它的Tag设为Player。
2、创建LookTargetPos脚本,把它挂载到第三人称控制器上。它的作用是当鼠标左键按下且按下的位置为Plane时,第三人称控制器朝向鼠标按下方向。
using System.Collections;
public class LookTargetPos : MonoBehaviour
{
public static Vector3 targetPos;//用来保存鼠标点击到地面的位置
private bool isMouseDown = false;//判断鼠标左键是否一直按下
void Start()
{
targetPos = this.transform.position;
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
isMouseDown = true;
LookAtPos();
}
else if (Input.GetMouseButtonUp(0))
{
isMouseDown = false;
}
//如果鼠标左键一直按下,则一直更新鼠标位置
if (isMouseDown == true)
{
LookAtPos();
}
}
void LookAtPos()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitinfo;
bool isCollider = Physics.Raycast(ray, out hitinfo);
//判断鼠标是否点击地面
if (isCollider == true && hitinfo.collider.tag == "Ground")
{
targetPos = hitinfo.point;
targetPos.y = this.transform.position.y;
this.transform.LookAt(targetPos);
}
}
}
3、创建PlayerMove脚本,把它挂载到第三人称控制器上。它的作用是控制第三人称控制器移动到鼠标左键按下的位置。
using System.Collections;
public enum Playerstate
{
Moveing,
Idle
}
public class PlayerMove : MonoBehaviour
{
private CharacterController controller;
public int speed = 4;
private float distance;//用来保存游戏主角和目标点的距离
public Playerstate state;//保存游戏主角的状态
// Use this for initialization
void Start()
{
controller = this.GetComponent<CharacterController>();
state = Playerstate.Idle;
}
// Update is called once per frame
void Update()
{
Move();
}
void Move()
{
distance = Vector3.Distance(this.transform.position, LookTargetPos.targetPos);
if(distance>0.05f)
{
controller.SimpleMove(this.transform.forward * speed);
state = Playerstate.Moveing;
print(distance);
}
else
{
state = Playerstate.Idle;
}
}
}
4、创建PlayerState脚本,把它挂载到第三人称控制器上。它的作用是控制第三人称控制器动画播放。
using System.Collections;
public class PlayerState : MonoBehaviour
{
private PlayerMove playerState;
private float distance;
// Use this for initialization
void Start()
{
playerState = this.GetComponent<PlayerMove>();
}
// Update is called once per frame
void LateUpdate()
{
//如果游戏主角在移动就播放跑的动画
if (playerState.state == Playerstate.Moveing)
{
PlayAnimation("run");
}
//如果游戏主角在等待就播放站的动画
else if (playerState.state == Playerstate.Idle)
{
PlayAnimation("idle");
}
}
void PlayAnimation(string animationName)
{
animation.CrossFade(animationName);
}
}
5、创建CameraFollow脚本,把它挂载到Main Camera上。它的作用是:1、让Main Camera跟随第三人称控制器移动;2、改变Main Camera视角;3、控制Main Camera与第三人称控制器的距离。
Visual Studio 2015 ISO 校验 - XuanTong 阅读原文»
被一大波Xcode自带病毒文件的消息吓到了,赶紧校验一下自己的Visual Studio 2015压压惊^-^。
Visual Studio 2015 ISO的校验码地址:
https://www.visualstudio.com/downloads/visual-studio-2015-iso-sha1-vs.aspx
微软自家校验软件使用说明及下载(繁体的简体中文没找到):
https://support.microsoft.com/zh-tw/kb/841290
示例:
1安装,其实就是自解压。
2打开命令提示符
3输入 fciv F:\vs2015.pro_chs.iso -sha1 (把文件路径替换就行了。)
校验时间较长请耐心等待。
附校验码:
Visual Studio 社区版 2015:
Chinese-Simplified 1044F9F4E0EA1304AFECF6780BF599F1DA248DF8
English BAAD3CEBAB7A5834D8F78F7D02E4880C010F3BA9
Visual Studio 专业版 2015:
Chinese-Simplified 629E7154E2695F08A3C692C0B3F6CE19DF6D3A72
English E01F364C3F21CDFCEBB25D3C028398741F08EB24
本文链接:Visual Studio 2015 ISO 校验,转载请注明。
没有评论:
发表评论