近期热门
粉丝3
关注 0
获赞 0
求人物控制代码(看清楚才发哦)

[U3D] 求人物控制代码(看清楚才发哦)

[复制链接]
7556 5 0 0 11年前 举报
在unity中如何实现wasd控制人物旋转并向相应的方向移动,人物旋转时,摄像机不跟着旋转,所以能看到人物的转向,当按下左shift时,摄像机旋转,调整到人物的后方。
这是我一直想实现的功能,由于个人技术低下,希望有能力的人能发下代码,让我学习学习。
谢谢了。

0
点赞
0
打赏
0
添加到收藏夹

0

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论5
您需要登录后才可以回帖 登录

CGJOY网友 
{:7_248:}
10年前
回复

使用道具

nihao52116 发表于 2013-8-8 15:50
至于按SHIFT切换摄像机的话  建议用切换摄像机
吧另外一个摄像机拖到人物模型上  就能跟随人物动 自己调下 ...

嘿呀呀!你的想法令我有所启发,真是大谢!!!!
Thank you so much!

11年前
回复

使用道具 举报

哇 不懂 不过貌似很厉害的样子哦~~~~~~~~~
11年前
回复

使用道具 举报

本帖最后由 nihao52116 于 2013-8-8 16:14 编辑

至于按SHIFT切换摄像机的话  建议用切换摄像机
吧另外一个摄像机拖到人物模型上  就能跟随人物动 自己调下位置

你可以参考下面这个脚本,通过控制active属性 来切换相机
var xj1:GameObject;
var xj2:GameObject;
var xj3:GameObject;
function Start ()
{
        xj1=GameObject.Find("xiangji1");
        xj2=GameObject.Find("xiangji2");
        xj3=GameObject.Find("Camera");

        xj1.active = true;
        xj2.active = false;
        xj3.active = false;
}

function Update ()
{
        if(Input.GetKey(KeyCode.Z))
        {
        xj1.active = true;
        xj2.active = false;
        xj3.active = false;
        }
    else if(Input.GetKey(KeyCode.X))
    {
    xj2.active = true;
        xj1.active = false;
        xj3.active = false;
    }
     else if(Input.GetKey(KeyCode.C))
    {
    xj3.active = true;
        xj1.active = false;
        xj2.active = false;
    }        
}
其实脚本这块 你去http://game.ceeger.com/Script/index.Classes.html  这有UNITY 各个脚本的用法  自己试试   遇到哪点不会了来论坛问问



11年前
回复

使用道具 举报

本帖最后由 nihao52116 于 2013-8-8 15:50 编辑

//把摄像机定位到人物身上,需要自己调整下摄像机的距离
e=GameObject.Find("摄像机名字");
        e.transform.position.x=this.transform.position.x;
        e.transform.position.z=this.transform.position.z;
//人物控制, 你自己改下吧

if (Input.GetKey(KeyCode.W))
                {
                this.transform.rotation.y=0;
                this.transform.Translate(Vector3.forward *Time.deltaTime * speed);
                }
        else if (Input.GetKey(KeyCode.A))
                {               
                this.transform.Translate(Vector3.forward *Time.deltaTime * speed);
                this.transform.Rotate(Vector3.up * -1);
                }
               
        else if (Input.GetKey(KeyCode.D))
                {
                this.transform.Translate(Vector3.forward *Time.deltaTime * speed);
               
                this.transform.Rotate(Vector3.up * 1);
        }
        else if (Input.GetKey(KeyCode.S))
                {
                this.transform.rotation.y=180;
                this.transform.Translate(Vector3.forward *Time.deltaTime * speed);
                }




11年前
回复

使用道具 举报

您当前使用的浏览器IE内核版本过低会导致网站显示错误

请使用高速内核浏览器或其他浏览器