2015年9月18日星期五

unity3d模仿魔兽世界鼠标对游戏操作 - jj391

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
unity3d模仿魔兽世界鼠标对游戏操作 - jj391  阅读原文»

  1、新建unity3d项目,在项目中导入CharacterController包。在游戏中创建Plane作为地面,把Plane的Tag设为Ground。创建Directional light照亮游戏世界。把第三人称控制器放到Plane上面,之后把挂载第三人称的脚本Remove掉,把它的Tag设为Player。

  2、创建LookTargetPos脚本,把它挂载到第三人称控制器上。它的作用是当鼠标左键按下且按下的位置为Plane时,第三人称控制器朝向鼠标按下方向。

using UnityEngine;
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 UnityEngine;
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 UnityEngine;
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与第三人称控制器的距离。

using UnityEngine;
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

软件下载地址:
http://download.microsoft.com/download/c/f/4/cf454ae0-a4bb-4123-8333-a1b6737712f7/Windows-KB841290-x86-ENU.exe

示例:

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 校验,转载请注明。

阅读更多内容

没有评论:

发表评论