游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2051|回复: 4

大家的游戏里的角色走直线都是怎么实现的?(任何角度)

[复制链接]

1

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2009-11-18 16:28:00 | 显示全部楼层 |阅读模式
我的要求是角色移动过程中如果起始格和目标格中间无障碍则改为起始格到目标格走直线运动。
请大家帮我想一想。
我的是2D游戏。

30

主题

422

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2009-11-18 19:24:00 | 显示全部楼层

Re:大家的游戏里的角色走直线都是怎么实现的?(任何角

这样的?
http://code.google.com/p/tankwarca

浮点位置a(x,y) b(x,y)
向量Dab = b - a = (b.x-a.x, b.y-a.y)
单位化这个向量得到d
位置posNew = posOld + d * fSpeed;

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2009-11-18 20:06:00 | 显示全部楼层

Re:大家的游戏里的角色走直线都是怎么实现的?(任何角

向量。

86

主题

2251

帖子

2384

积分

金牌会员

Rank: 6Rank: 6

积分
2384
QQ
发表于 2009-11-18 22:52:00 | 显示全部楼层

Re:大家的游戏里的角色走直线都是怎么实现的?(任何角

起点和终点,精灵都在与格子对齐。所以很容易得到精灵热点(CenterXY)在起点和终点的像素坐标。两个坐标连成一条线,这条线是任意角度的。
精灵角色有自己的移动速度,这个速度保证了精灵无论是横走竖走还是斜走,都是一个速度。一般用三角函数来算,你看看斜走有没有用。
任意角度也差不多。
2D游戏精灵图一般只有8个方向,那么取最接近的那个方向即可。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2009-11-21 19:30:00 | 显示全部楼层

Re:大家的游戏里的角色走直线都是怎么实现的?(任何角

DIRECTION = (MOUSE - S) / norm(MOUSE - S)
V = speed * DIRECTION  
S_NEW = S + V * dt
// 大写表示向量

funcman>>
我很久以前的代码中用过三角函数和反三角函数。其实根本不需要,直接归一化方向向量即可。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-19 03:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表