unity初写游戏(三)人物的瞬移
2015-08-12 13:22
375 查看
这次的脚本主要写得是鼠标左键右键的功能,子弹的发射和人物的瞬移(并不是完美)功能。
public GameObject man;
public bool move;
public GUIText movetime;
public float h;
public float op;
public int T = 3;
private System.Timers.Timer time = new System.Timers.Timer (5000);//设定时间经过多少秒后触发
void Awake() {
man = GameObject.Find ("player");
time.Elapsed += new System.Timers.ElapsedEventHandler (run);//设定触发的函数
time.Start();//设定开启
}
void FixedUpdate () {
movetime.text = "瞬移次数:" + T;
if (T > 0) {
if (Input.GetMouseButtonDown (1)) {//如果调用鼠标右键执行
op = man.transform.position.x;
move = true;
T -= 1;
}
}
if (move) {//具体的瞬移方式
h = Input.GetAxis ("Horizontal");//获得现在的人物朝向
man.rigidbody2D.AddForce (new Vector2 (h * 1000, 0), ForceMode2D.Force);//加力来让人物进行移动
if (Mathf.Abs (op - man.transform.position.x) > 5) {//设定移动的距离。
move = false;//关闭函数
}
}
}
void run(object source, System.Timers.ElapsedEventArgs args) {//通过时间来回复瞬移次数
if (T < 3) {
T += 1;
}
}
这个脚本存在着比较多的问题:
1.这个人物在碰撞到物体之后不会停止力的给,因为它并没有达到距离,所以产生了这个问题。但是我用碰撞触发来解决发现并不好使,因为如果要触发的话就得设为Is Trigger这样的话人物就会穿过其他物体。
2.如果我及时改变方向会到另外一边去,距离也会多,毕竟是瞬移这样不好,但是如果我改成定点变位置的话,还有点生硬。
public GameObject man;
public bool move;
public GUIText movetime;
public float h;
public float op;
public int T = 3;
private System.Timers.Timer time = new System.Timers.Timer (5000);//设定时间经过多少秒后触发
void Awake() {
man = GameObject.Find ("player");
time.Elapsed += new System.Timers.ElapsedEventHandler (run);//设定触发的函数
time.Start();//设定开启
}
void FixedUpdate () {
movetime.text = "瞬移次数:" + T;
if (T > 0) {
if (Input.GetMouseButtonDown (1)) {//如果调用鼠标右键执行
op = man.transform.position.x;
move = true;
T -= 1;
}
}
if (move) {//具体的瞬移方式
h = Input.GetAxis ("Horizontal");//获得现在的人物朝向
man.rigidbody2D.AddForce (new Vector2 (h * 1000, 0), ForceMode2D.Force);//加力来让人物进行移动
if (Mathf.Abs (op - man.transform.position.x) > 5) {//设定移动的距离。
move = false;//关闭函数
}
}
}
void run(object source, System.Timers.ElapsedEventArgs args) {//通过时间来回复瞬移次数
if (T < 3) {
T += 1;
}
}
这个脚本存在着比较多的问题:
1.这个人物在碰撞到物体之后不会停止力的给,因为它并没有达到距离,所以产生了这个问题。但是我用碰撞触发来解决发现并不好使,因为如果要触发的话就得设为Is Trigger这样的话人物就会穿过其他物体。
2.如果我及时改变方向会到另外一边去,距离也会多,毕竟是瞬移这样不好,但是如果我改成定点变位置的话,还有点生硬。
相关文章推荐
- 我是运营,我没有假期
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- C++实现基于控制台界面的吃豆子游戏
- 纯javascript实现的小游戏《Flappy Pig》实例
- JavaScript实现俄罗斯方块游戏过程分析及源码分享
- JS小游戏之仙剑翻牌源码详解
- JS小游戏之宇宙战机源码详解
- JavaScript游戏之优化篇
- js实现俄罗斯方块小游戏分享
- 用javascript做一个webgame连连看大家看下
- jquery实现的美女拼图游戏实例
- python简单猜数游戏实例